rabbitMQ 集羣的配置
參考文檔:http://blog.csdn.net/woogeyu/article/details/51119101
環境說明
在兩個不同的主機上創建兩個節點主機IP,主機名如下
10.176.0.13 node1
10.176.0.19 node2
1.分別在兩個主機上安裝rabbitMQ(一個主機一個rabbitMQ),注意語言環境erlang和rabbitMQ的版本必須一致
2.集羣的配置
RabbitMQ集羣中所有節點都是平等的,沒有絕對的主次之分,每一個節點的配置信息都會在集羣中進行同步。只有節點類型區別,節點類型有disk型和RAM型。分別對應磁盤和內存,disk節點可以持久化消息安全性較高、RAM節點存取速度快,但是不能持久化。一個集羣中至少要有一個disk類型的節點,以便在所有節點宕機重啓時將持久化隊列中的消息進行持久化。
問題說明: RabbitMQ要求在集羣中至少有一個磁盤節點,所有其他節點可以是內存節點,當節點加入或者離開集羣時,必須要將該變更通知到至少一個磁盤節點。如果集羣中唯一的一個磁盤節點崩潰的話,集羣仍然可以保持運行,但是無法進行其他操作(增刪改查),直到節點恢復。
解決方案:設置兩個磁盤節點,至少有一個是可用的,可以保存元數據的更改。
2.1安裝準備,主機名之間互相解析,分別修改兩臺主機的hosts文件
vim /etc/hosts 添加如下內容
192.168.31.66 node1
192.168.31.67 node2
2.2同步 Erlang Cookie(節點之間是通過Erlang Cookie 文件通信Erlang Cookie是保證不同節點可以相互通信的密鑰,來達到配置信息的同步)將任意一臺的cookie文件或者內容替換到集羣其他機器。最後確保文件權限爲400
查看node1節點的cookie值
[root@node1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
PSNXAHYXQRPBKUVNYQCU
關閉node2,將node1的cookie的值複製到node2節點
[root@node2 ~]# rabbitmqctl stop
[root@node2 ~]# echo PSNXAHYXQRPBKUVNYQCU > /var/lib/rabbitmq/.erlang.cookie
cookie值同步後,啓動node2節點
service rabbitmq-server start
2.3將node1加入集羣node2作爲RAM類型節點
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1 --ram
rabbitmqctl start_app
2.4查看集羣的狀態
rabbitmqctl status
rabbitmqctl cluster_status
3 訪問任意管理端界面查看http://ip:15672 可查看集羣信息