前言
资料准备:
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