資料內(nèi)容:
1.RabbitMQ集群搭建
一般來說,如果只是為了學(xué)習(xí)RabbitMQ或者驗(yàn)證業(yè)務(wù)工程的正確性那么在本地環(huán)境或者測試環(huán)境
上使用其單實(shí)例部署就可以了,但是出于MQ中間件本身的可靠性、并發(fā)性、吞吐量和消息堆積能
力等問題的考慮,在生產(chǎn)環(huán)境上一般都會(huì)考慮使用RabbitMQ的集群方案。
1.1 集群方案的原理
RabbitMQ這款消息隊(duì)列中間件產(chǎn)品本身是基于Erlang編寫,Erlang語言天生具備分布式特性(通
過同步Erlang集群各節(jié)點(diǎn)的cookie來實(shí)現(xiàn))。RabbitMQ本身不需要像ActiveMQ、Kafka那樣通
過ZooKeeper分別來實(shí)現(xiàn)HA方案和保存集群的元數(shù)據(jù)。
1.2 如下案例中使用多臺(tái)云服務(wù)器進(jìn)行集群搭建
主要參考官方文檔:https://www.rabbitmq.com/clustering.html
首先確保RabbitMQ運(yùn)行沒有問題
1 #修改hostname
2 vim /etc/hostname
3 m1
4 m2
5 #修改hosts集群設(shè)備
6 vim /etc/hosts
7 192.168.132.137 m1
8 192.168.132.139 m2
9
10 #開放防火墻 4369/5672/15672/25672端口
11 firewall‐cmd ‐‐zone=public ‐‐add‐port=4369/tcp ‐‐permanent
12 firewall‐cmd ‐‐zone=public ‐‐add‐port=5672/tcp ‐‐permanent13 firewall‐cmd ‐‐zone=public ‐‐add‐port=15672/tcp ‐‐permanent
14 firewall‐cmd ‐‐zone=public ‐‐add‐port=25672/tcp ‐‐permanent
15
16 #重載防火墻
17 firewall‐cmd ‐‐reload
18
19 #重啟服務(wù)器
20 reboot
21
22 #同步.erlang.coolie
23 find / ‐name *.cookie
24
25 #將文件發(fā)送至指定ip的服務(wù)器中,發(fā)送的過程中需要指定另一臺(tái)服務(wù)器的密碼信息
26 scp /var/lib/rabbitmq/.erlang.cookie 192.168.132.134:/var/lib/rabbitmq/
27
28 #兩個(gè)電腦啟動(dòng)MQ服務(wù)
29 rabbit‐server
30
31
32 # 停止應(yīng)用 通過rabbitmqctl status 可以查看當(dāng)前rabbitmactl默認(rèn)操作的節(jié)點(diǎn)信息
33 rabbitmqctl stop_app
34
35 # 將當(dāng)前節(jié)點(diǎn)加入到一個(gè)集群中 默認(rèn)磁盤節(jié)點(diǎn)被加入的節(jié)點(diǎn)只要是集群中的一員,其他節(jié)點(diǎn)都能
夠馬上感受到集群節(jié)點(diǎn)的變化
36 rabbitmqctl join_cluster rabbit@m1
37
38 # 重新啟動(dòng)當(dāng)前節(jié)點(diǎn)
39 rabbitmqctl start_app
40
41 #查看集群信息
42 rabbitmqctl cluster_status