前言
資料準備:
1、erlong安裝包
2、rabbitmq安裝包
3、兩臺Linux服務器(本篇文章用的CentOS7)
可以按照下面博客中步驟安裝:Linux下安裝Rabbitmq
環境準備
保證兩臺服務器安裝rabbitmq成功,並且能夠成功訪問到管理臺界面。
在兩臺Linux系統中修改hostname,分別爲A和B,作爲集羣註冊的主機名。
執行語句:
vi /etc/hosts
修改的文件內容如下:
A主機的主機名設置
B主機的主機名設置
設置成功後保存退出,重啓服務器:
reboot
注意:2臺Linux服務器需要完成同樣的操作。關閉防火牆確保2臺機器相互ping 同可以執行ping A 和ping B命令進行測試。
重啓後執行ping命令,保證兩臺機器能夠相互訪問:
配置Cookie文件
Erlang Cookie是保證不同節點可以互相通信的祕鑰,要保證集羣中的不同節點互相通信必須共享相同的Erlang Cookie。
由於我安裝rabbitmq是通過rpm進行安裝的,所以默認的Erlang Cookie文件路徑是:
/var/lib/rabbitmq/.erlang.cookie
cat /var/lib/rabbitmq/.erlang.cookie
要保證A服務器和B服務器的cookie文件值一致,有兩種解決方式,可以選擇使用vim進行編輯,也可以使用scp命令完成文件跨機器拷貝例如:
scp /var/lib/rabbitmq/.erlang.cookie 192.168.237.138:/var/lib/rabbitmq
注意:由於這個文件的權限是隻讀因此無論是使用vim還是scp來實現Cookie文件的同步都會失敗,因此必須要修改這個文件的權限:
chmod 777 /var/lib/rabbitmq/.erlang.cookie
當Cookie文件同步完成以後再修改權限回只讀:
chmod 400 /var/lib/rabbitmq/.erlang.cookie
組件集羣
1、啓動兩個服務器的rabbitmq:
service rabbitmq-server start
訪問瀏覽器,保證都能夠出現rabbitmq界面:
2、查看集羣狀態確認節點
[root@B ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@B ...
[{nodes,[{disc,[rabbit@B]}]},
{running_nodes,[rabbit@B]},
{cluster_name,<<"rabbit@A">>},
{partitions,[]},
{alarms,[{rabbit@B,[]}]}]
此時還沒有進行其他服務器節點的加入,所以目前顯示的節點只有本服務器本身。
3、將某個RabbitMQ加入到某個服務器節點
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@A
rabbitmqctl start_app
注意:
rabbitmqctl join_cluster rabbit@A 命令中的A爲某個機器的hostname,在hostname爲B的機器中執行這個命令。
4、再次查看集羣狀態確認節點
[root@B ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@B ...
[{nodes,[{disc,[rabbit@A,rabbit@B]}]},
{running_nodes,[rabbit@A,rabbit@B]},
{cluster_name,<<"rabbit@A">>},
{partitions,[]},
{alarms,[{rabbit@A,[]},{rabbit@B,[]}]}]
注意:
當查看節點狀態時發現2臺機器的節點同時顯示機表示集羣搭建完成。
刷新頁面:
至此集羣搭建成功。
其他命令:
如果要將某個節點從集羣中移除,使其變回獨立節點,可以使用以下命令:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app