[toc]
rabbimtq簡介
rabbitmq是用erlang語言開發(fā)的灵妨,erlang語言最初用于交換機(jī)領(lǐng)域财饥,這樣就使得rabbitmq和broker(server)之間進(jìn)行數(shù)據(jù)交互的性能是非常優(yōu)秀的,erlang有著和原生socket一樣的延遲务嫡,集群非常方便甲抖,因?yàn)閑rlang天生就是分布式語言,但其本身不支持負(fù)載均衡心铃。
rabbitmq模式
rabbitmq模式大概分為以下三種:
- 單一模式
- 普通模式(默認(rèn)的集群模式)
- 鏡像模式(把需要的隊(duì)列做成鏡像隊(duì)列准谚,存在于多個(gè)節(jié)點(diǎn)。屬于rabbitmq的HA方案去扣,在對業(yè)務(wù)的可靠性要求較高的場合中比較適用)
rabbitmq特點(diǎn)
rabbitmq的集群節(jié)點(diǎn)包括內(nèi)存節(jié)點(diǎn)和磁盤節(jié)點(diǎn)柱衔。rabbitmq支持消息的持久化也就是數(shù)據(jù)卸載磁盤上,最合適的方案就是既有磁盤節(jié)點(diǎn)愉棱,又有內(nèi)存節(jié)點(diǎn)唆铐。
rabbitmq集群安裝
環(huán)境規(guī)劃
- 10.200.200.10 rabbitmq01 --disk
- 10.200.200.20 rabbitmq02 --ram
- 10.200.200.30 rabibtmq03 --ram
1、安裝依賴包
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz socat
2羽氮、下載erlang
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
3或链、下載rabbitmq
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
4、安裝erlang和rabbitmq
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
5档押、修改hosts,保證三臺服務(wù)器直接都可以相互ping通
vim /etc/hosts
10.200.200.10 rabbitmq01
10.200.200.20 rabbitmq02
10.200.200.30 rabibtmq03
6祈纯、啟動rabbitmq服務(wù)
systemcetl start rabbitmq-server
7令宿、選擇其中一臺erlang.cookie為準(zhǔn),拷貝到其他節(jié)點(diǎn)腕窥,這里假設(shè)為第一臺
cd /var/lib/rabbitmq/
scp .erlang.cookie root@rabbit02:/var/lib/rabbitmq/
scp .erlang.cookie root@rabbit03:/var/lib/rabbitmq/
8粒没、拷貝完如果直接重啟的話會導(dǎo)致服務(wù)起不來,因?yàn)槲募臋?quán)限不對
cd /var/lib/rabbitmq/
chown -R rabbitmq. .erlang.cookie
chmod 400 .erlang.cookie
9簇爆、檢查插件
/usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看插件安裝情況
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management //啟用rabbitmq_management服務(wù)
systemctl restrart rabbitmq-server
10癞松、將rabbitmq02/rabbitmq03加入到集群節(jié)點(diǎn)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
11爽撒、查看集群狀態(tài)
rabbitmqctl cluster_status
12、添加全局鏡像策略
admin->Policies->Add/update a policy
Name:ha_all
Pattern:^
Defiinition: ha-mode=all
Add policy
或者使用命令行工具
./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
在創(chuàng)建隊(duì)列時(shí)响蓉,Arguments中設(shè)置ha-mode
= all
硕勿,創(chuàng)建完成之后,在Policy中要看到剛剛創(chuàng)建的queue枫甲,會顯示+2(表示3個(gè)節(jié)點(diǎn))源武。
當(dāng)有節(jié)點(diǎn)故障時(shí),服務(wù)恢復(fù)想幻,顯示粉色的+粱栖,需要在該節(jié)點(diǎn)手動執(zhí)行 rabbitctl sync_quere
隊(duì)列名稱同步,就會恢復(fù)。