修改每个机器的hosts文件,以添加主机名和ip的对应关系

[root@localhost ~]# vim /etc/hosts

RabbitMq虚拟域名

  1. 10.27.10.230 rabbit0
  2. 10.27.10.231 rabbit1
  3. 10.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