我們之前部署過一個非root用戶的rabbitmq節點(參見linux非root用戶安裝rabbitmq),現在采用同樣方式,部署另外兩個節點。
集群的關鍵是.erlang.cookie文件,注意前面是有點號的。打開第一個節點看看:
[wlf@wlf188 rabbitmq]$ cd ~ [wlf@wlf188 ~]$ vi .erlang.cookie AYMYRMIDTAWBOXCITAXQ ~
里面就是一串類似秘鑰的東東,把第一個節點的這個秘鑰替換掉另外兩個節點,因為.erlang.cookie是只讀的,vi替換后用wq!即可,替換完確認一下:
[wlf@wlf186 ~]$ cat .erlang.cookie
AYMYRMIDTAWBOXCITAXQ
應該注意的是集群的機器之間網絡是OK的,一般都會在etc/hosts文件中配置機器名:
[wlf@wlf188 ~]$ cat /etc/hosts 127.0.0.1 localhost ::1 localhost 192.168.10.113 wlf185 192.168.10.112 wlf186 192.168.10.110 wlf188
主節點部署在wlf188,假設主節點已經啟動,那么現在我們啟動從節點(wlf186和wlf185)。先看wlf186:
[wlf@wlf186 ~]$ rabbitmq-server -detatched ## ## ## ## RabbitMQ 3.7.18. Copyright (C) 2007-2019 Pivotal Software, Inc. ########## Licensed under the MPL. See https://www.rabbitmq.com/ ###### ## ########## Logs: /home/wlf/rabbitmq_server-3.7.18/var/log/rabbitmq/rabbit@wlf186.log /home/wlf/rabbitmq_server-3.7.18/var/log/rabbitmq/rabbit@wlf186_upgrade.log Starting broker... completed with 0 plugins.
后台啟動后,先停應用:
[wlf@wlf186 ~]$ rabbitmqctl stop_app
Stopping rabbit application on node rabbit@wlf186 ...
再加入主節點集群:
[wlf@wlf186 ~]$ rabbitmqctl join_cluster rabbit@wlf188
Clustering node rabbit@wlf186 with rabbit@wlf188
最后重新拉起應用:
[wlf@wlf186 ~]$ rabbitmqctl start_app Starting node rabbit@wlf186 ... completed with 0 plugins.
確認集群狀態:
[wlf@wlf186 ~]$ rabbitmqctl cluster_status Cluster status of node rabbit@wlf186 ... [{nodes,[{disc,['rabbit@wlf186','rabbit@wlf188']}]}, {running_nodes,['rabbit@wlf188','rabbit@wlf186']}, {cluster_name,<<"rabbit@wlf188">>}, {partitions,[]}, {alarms,[{'rabbit@wlf188',[]}, {'rabbit@wlf186',[]}]}]
我們看到主節點wlf188和從節點wlf186均為disc——磁盤節點,現在把另一個從節點作為內存節點加入集群,處理步驟同上,只需在加入集群時指定ram參數即可:
[wlf@wlf185 ~]$ rabbitmqctl join_cluster --ram rabbit@wlf188
Clustering node rabbit@wlf185 with rabbit@wlf188
重新啟動應用后我們再看看集群狀態,wlf185確實是內存節點:
[wlf@wlf185 ~]$ rabbitmqctl cluster_status Cluster status of node rabbit@wlf185 ... [{nodes,[{disc,['rabbit@wlf188','rabbit@wlf186']}, {ram,['rabbit@wlf185']}]}, {running_nodes,['rabbit@wlf186','rabbit@wlf188', 'rabbit@wlf185']}, {cluster_name,<<"rabbit@wlf188">>}, {partitions,[]}, {alarms,[{'rabbit@wlf186',[]}, {'rabbit@wlf188',[]}, {'rabbit@wlf185',[]}]}]