集群主机信息:
主机IP | 主机名 |
---|---|
10.0.0.101(作为主节点) | node1 |
10.0.0.102 | node2 |
10.0.0.103 | node3 |
1、按照上一篇博客《单机版Rabbitmq部署 》,里面的安装步骤在三台虚拟机上都同样操作,先安装好单机版rabbitmq
2、三台机器的/etc/hosts都加入下面的内容:
10.0.0.101 node1
10.0.0.102 node2
10.0.0.103 node2
3、停止掉三台的服务,修改两台备节点node2和node3机器上的rabbitmq的cookie文件内容,改成和node1一样的内容:
1)修改从节点node2上面 .erlang.cookie 文件权限
[root@node2 ~]# cd /var/lib/rabbitmq/ #注意,.erlang.cookie一般情况下是在这个位置,但是在部署有一套特殊环境的时候遇到.erlang.cookie是在/root下面,有一些机器在erlang的安装目录下面还有一个.erlang.cookie文件。因此在这里找不到文件的时候,find命令搜索一下
[root@node2 rabbitmq]# chmod 755 .erlang.cookie #因为/var/lib/rabbitmq/.erlang.cookie 只读文件,因此在修改之前需要将文件权限改成可读写的权限,可以暂时改成755
2)删除node2节点.erlang.cookie文件内容,将node1节点的.erlang.cookie内容填进去。node3节点也相同操作
3)然后分别查看主节点node1和从节点node2和node3上面.erlang.cookie文件的内容,已经变成了一样
[root@node1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
ABBMUFNDBMXKVEFSPVAY
[root@node2 ~]# cat /var/lib/rabbitmq/.erlang.cookie
ABBMUFNDBMXKVEFSPVAY
[root@node3 ~]# cat /var/lib/rabbitmq/.erlang.cookie
ABBMUFNDBMXKVEFSPVAY
然后修改从节点node2和node3cookie文件权限
[root@node2 ~]#chmod 400 /var/lib/rabbitmq/.erlang.cookie #一定要改成400再启动,否则启动的时候会报错的!!!)
[root@node3 ~]#chmod 400 /var/lib/rabbitmq/.erlang.cookie
4、重新启动两个从节点服务:
node1主节点不需要重启。
万一主节点node1需要重启,启动方式也和原来的方式一样,因为cookie文件没有变化,并且需要访问、登录
[root@node1 rabbitmq]# service rabbitmq-server start
Starting rabbitmq-server (via systemctl): [ 确定 ]
node2和node3用 rabbitmq-server -detached命令启动,因为修改了原来的cookie文件,使用service rabbitmq-server start启动,会报错,无法启动:
先kill掉从节点node2和node3节点的rabbitmq服务进程,再分别重新启动:
启动node2节点:
[root@node2 rabbitmq]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
启动node3节点:
[root@node3 rabbitmq]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
5、配置三台服务器的主从集群——node1作为主节点,那么在node2和node3上面都执行下面的命令:
#rabbitmqctl stop_app
#rabbitmqctl reset
#rabbitmqctl join_cluster rabbit@node1 # rabbit@node1里面的node1是主节点的主机名,注意修改
#rabbitmqctl start_app
注意:如果三台主机的防火墙必须开启,那么在执行这几个步骤之前就要确认主机之间的15672、5672、15674、4369和25672端口是否互通,否则这几个步骤会失败,报错找不到主节点
6、在node2和node3上配置好之后,再在主节点node1上面查看状态,出现下面的状态就是已经好了
[root@node1 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1
[{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]},
{running_nodes,[rabbit@node3,rabbit@node2,rabbit@node1]},
{cluster_name,<<"rabbit@node1">>},
{partitions,[]},
{alarms,[{rabbit@node3,[]},{rabbit@node2,[]},{rabbit@node1,[]}]}]
7、页码访问检测,访问主节点页面http://10.0.0.101:15672/#/ 能够在界面看到三个节点
到这里,Rabbitmq集群就部署好啦
单机版Rabbitmq部署:https://blog.51cto.com/10950710/2135676