RabbitMQ 集羣-鏡像隊列

先介紹環境:

3臺個人雲服務器    A(20)          B(37)             C(26) 

20 這臺作爲Master               37、26作爲Slave

開放端口:5672      15672      25672      4369     

如果開啓防火牆建議關閉

查看防火牆狀態: systemctl status firewalld.service

綠的running表示防火牆開啓

執行關閉命令: systemctl stop firewalld.service

再次執行查看防火牆命令:systemctl status firewalld.service

執行開機禁用防火牆自啓命令  : systemctl disable firewalld.service

1:三臺服務器先各自進行安裝 啓動                  安裝單機教程:https://blog.csdn.net/publicv/article/details/96421936

 

 

 

2:按照教程來,需要將三臺的 hostname  名字重新定義一下  ,這邊根據 ip 最後一段進行定義   例如:rabbit-xx

vim /etc/hostname
rabbit-xx

3:將三臺的 hosts 相互綁定,  互相ping通    三個節點都是一樣的操作

vim /etc/hosts
ip   rabbit-xx
ip    rabbit-xx
ip   rabbit-xx

 

 

4: 將master 節點的   .erlang.cookie   同步到其他兩臺服務器

cd /var/lib/rabbitmq/
ll -a
scp /var/lib/rabbitmq/.erlang.cookie ip:/var/lib/rabbitmq/

1:集羣步驟開始:將三臺節點都進行關閉            這邊不能使用單機時的命令   /etc/init.d/rabbitmq-server stop

rabbitmqctl stop

會遇到這個錯誤,不要慌。他說明的很清楚了, 

  • 4369要開啓 
  • 25672要開啓   
  • hostname主機名是否和當前主機名保持一致   
  • home 路徑是否正確   
  • cookie是否一致 

因爲我寫這邊博客時是按照我的教程一步一步操作的,希望儘可能避免環境問題。

(1):在這邊直接執行  reboot   命令進行重啓

reboot
/etc/init.d/rabbitmq-server start
lsof -i:5672                
rabbitmqctl stop

2: 這時三臺節點都已經進行了關閉,  將三臺服務器   執行啓動集羣命令    

rabbitmq-server  -detached

3:slave 節點加入集羣操作,master 不要執行這步驟    以後重新加入到集羣中也是這個命令

37這臺slave 執行:
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@你的masterHostname
rabbitmqctl start_app


26這臺slave 執行:
rabbitmqctl stop_app
rabbitmqctl join_cluster   rabbit@你的masterHostname
rabbitmqctl start_app

這邊  --ram 含義是:使用內存保存而非持久化磁盤。一般來說3臺節點 2臺持久化1臺內存性能會比較好

4:查看集羣狀態(任意一臺節點上都可以) 

rabbitmqctl cluster_status
訪問任意一個管控臺節點:http://ip:15672

 

 如果出現報紅:說明你這臺節點的  管控臺沒有開啓,在報紅那臺節點上執行  管控臺啓動

rabbitmq-plugins enable rabbitmq_management

 

5:設置鏡像隊列策略,在任意一臺節點上執行一次即可 

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

鏡像隊列成功圖: 

 

遇到的一些問題:

 

rabbitmqctl stop
Stopping and halting node 'rabbit@rabbit-26' ...
Error: unable to connect to node 'rabbit@rabbit-26': nodedown

DIAGNOSTICS
===========

attempted to contact: ['rabbit@rabbit-26']

rabbit@rabbit-26:
  * connected to epmd (port 4369) on rabbit-26
  * epmd reports node 'rabbit' running on port 25672
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?

current node details:
- node name: 'rabbitmq-cli-82@rabbit-26'
- home dir: /var/lib/rabbitmq
- cookie hash: kdWh0HU835FagHiGQNtq0A==

 我的解決成功方案:

重啓服務器

2:

/etc/init.d/rabbitmq-server start
Starting rabbitmq-server (via systemctl):  Job for rabbitmq-server.service failed because the control process exited with error code. erver.service" and "journalctl -xe" for details.
                                                           [FAILED]

 我的解決成功方案:

hosts  	沒有配置好

3:

Clustering node 'rabbit@rabbit-37' with 'rabbit@rabbit-20' ...
Error: unable to connect to nodes ['rabbit@rabbit-20']: nodedown

DIAGNOSTICS
===========

attempted to contact: ['rabbit@rabbit-20']

rabbit@rabbit-20:
  * unable to connect to epmd (port 4369) on rabbit-20: timeout (timed out)


current node details:
- node name: 'rabbitmq-cli-30@rabbit-37'
- home dir: /var/lib/rabbitmq
- cookie hash: kdWh0HU835FagHiGQNtq0A==

[root@rabbit-37 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@rabbit-20
Clustering node 'rabbit@rabbit-37' with 'rabbit@rabbit-20' ...

  我的解決成功方案:

4369   端口沒有開放

4:

 join_cluster --ram rabbit@rabbit-20
Clustering node 'rabbit@rabbit-37' with 'rabbit@rabbit-20' ...
Error: {inconsistent_cluster,"Node 'rabbit@rabbit-20' thinks it's clustered with node 'rabbit@rabbit-37', but 'rabbit@rabbit-37' disagrees"}

 我的解決成功方案: 

將所有節點  刪除 mnesia ,然後重啓 ,重新開始執行集羣搭建
rm -rf /var/lib/rabbitmq/mnesia/

5: 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章