修改每个机器的hosts文件,以添加主机名和ip的对应关系
[root@localhost ~]# vim /etc/hosts
RabbitMq虚拟域名
10.27.10.230 rabbit010.27.10.231 rabbit110.27.10.232 rabbit2
分别修改每个机器上的主机名,每个节点的主机名不能相同,因为rabbitmq是靠主机名进行定位的.
#rabbit0
[root@rabbit0 ~]# vim /etc/hostname
rabbit0
[root@rabbit0 ~]# reboot
#rabbit1
[root@rabbit0 ~]# vim /etc/hostname
rabbit1
[root@rabbit0 ~]# reboot
#rabbit2
[root@rabbit0 ~]# vim /etc/hostname
rabbit2
[root@rabbit0 ~]# reboot
分别修改每个机器上的rabbitmq配置文件,如没有则创建,用于指定节点名称,当没有这个文件配置时,默认节点名称为rabbit@主机名
[root@rabbit0 rabbitmq]# vim /etc/rabbitmq/rabbitmq.conf
RABBITMQ_NODENAME=rabbit@rabbit0
[root@rabbit1 rabbitmq]# vim /etc/rabbitmq/rabbitmq.conf
RABBITMQ_NODENAME=rabbit@rabbit1
[root@rabbit2 rabbitmq]# vim /etc/rabbitmq/rabbitmq.conf
RABBITMQ_NODENAME=rabbit@rabbit2
在rabbit0机器上的erlang cookie发送给其它两个机器,保证整个集群的erlang cookie一致
[root@rabbit0 rabbitmq]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbit1:/var/lib/rabbitmq/
[root@rabbit0 rabbitmq]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbit2:/var/lib/rabbitmq/
去每个节点上启动rabbitmq
[root@rabbit0 rabbitmq]# rabbitmq-server -detached
[root@rabbit1 rabbitmq]# rabbitmq-server -detached
[root@rabbit2 rabbitmq]# rabbitmq-server -detached
查看rabbitmq的集群状态,确保主机名正确
[root@rabbit0 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit0 ...
[{nodes,[{disc,[rabbit@rabbit0]}]},
{running_nodes,[rabbit@rabbit0]},
{cluster_name,<<"rabbit@rabbit0">>},
{partitions,[]},
{alarms,[{rabbit@rabbit0,[]}]}]
创建集群 -> 在rabbit1机器上,将rabbit1和rabbit0组成集群
[root@rabbit1 rabbitmq]# rabbitmqctl stop_app
Stopping node rabbit@rabbit1 ...
.
[root@rabbit1 rabbitmq]# rabbitmqctl reset
Resetting node rabbit@rabbit1 ....
[root@rabbit1 rabbitmq]# rabbitmqctl join_cluster rabbit@rabbit0
Clustering node rabbit@rabbit1 with rabbit@rabbit0 ....
[root@rabbit1 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@rabbit1 ....
\#查看集群状态,发现rabbit0和rabbit1成为了集群
Cluster status of node rabbit@rabbit1 ...
[{nodes,[{disc,[rabbit@rabbit0,rabbit@rabbit1]}]},
{running_nodes,[rabbit@rabbit0,rabbit@rabbit1]},
{cluster_name,<<"rabbit@rabbit0">>},
{partitions,[]},
{alarms,[{rabbit@rabbit0,[]},{rabbit@rabbit1,[]}]}]
创建集群 -> 在rabbit2机器上,将rabbit2和rabbit1组成集群
[root@rabbit2 ~]# rabbitmqctl stop_app
Stopping node rabbit@rabbit2 ....
[root@rabbit2 ~]# rabbitmqctl reset
Resetting node rabbit@rabbit2 ....
[root@rabbit2 ~]# rabbitmqctl join_cluster rabbit@rabbit1
Clustering node rabbit@rabbit2 with rabbit@rabbit1 ....
[root@rabbit2 ~]# rabbitmqctl start_app
Starting node rabbit@rabbit2 ....
#查看集群状态,发现rabbit0和rabbit1和rabbit2全部组成了集群
[root@rabbit2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit2 ...
[{nodes,[{disc,[rabbit@rabbit0,rabbit@rabbit1,rabbit@rabbit2]}]},
{running_nodes,[rabbit@rabbit0,rabbit@rabbit1,rabbit@rabbit2]},
{cluster_name,<<"rabbit@rabbit0">>},
{partitions,[]},
{alarms,[{rabbit@rabbit0,[]},{rabbit@rabbit1,[]},{rabbit@rabbit2,{rabbit@rabbit2,[]}]}]
节点命令说明
#停止一个节点
rabbitmqctl stop_app.
#重置一个节点,重置后,该节点将脱离原来所在的集群
rabbitmqctl reset.
#与某个节点组成集群
rabbitmqctl join_cluster rabbit@rabbit1.
#启动节点
rabbitmqctl start_app
