我们之前部署过一个非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',[]}]}]