RabbitMQ集群的搭建
系统环境
三台机器分别为centos6.6 64位
- vm61 192.168.1.61
- vm62 192.168.1.62
- vm63 192.168.1.63
安装
由于RabbitMQ是由erlang写的,所以需要erlang的运行环境,直接使用yum进行安装
yum install erlang
安装完erlang后,安装RabbitMQ
rpm -ivh rabbitmq-server-3.5.3-1.noarch.rpm
三台机器安装完rabbitmq后,首先在vm61上启动rabbitmq
service rabbitmq-server start
然后将vm61上的/var/lib/rabbitmq/.erlang.cookie中的内容复制到vm62和vm63上的/var/lib/rabbitmq/.erlang.cookie文件中 即三台服务器必须具有相同的cookie,如果不相同的话,无法搭建集群
配置
查看vm61上的集群的状态
rabbitmqctl cluster_status
得到如下结果
Cluster status of node rabbit@vm61 ...
[{nodes,[{disc,[rabbit@vm61]}]},
{running_nodes,[rabbit@vm61]},
{cluster_name,<<"rabbit@localhost.localdomain">>},
{partitions,[]}]
启动vm62、vm63上的rabbitmq
service rabbitmq-server start
将vm62加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@vm61
rabbitmqctl start_app
将vm63加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@vm61
rabbitmqctl start_app
查看集群的状态
rabbitmqctl cluster_status
得到如下结果
Cluster status of node rabbit@vm61 ...
[{nodes,[{disc,[rabbit@vm61,rabbit@vm62,rabbit@vm63]}]},
{running_nodes,[rabbit@vm63,rabbit@vm62,rabbit@vm61]},
{cluster_name,<<"rabbit@localhost.localdomain">>},
{partitions,[]}]
说明集群创建成功
错误
-
如果3台服务器的cookie不一致的话,会导致集群通信失败,无法创建集群
-
如果出现如下问题的话
Clustering node rabbit@vm62 with rabbit@vm61 ... Error: unable to connect to nodes [rabbit@vm61]: nodedown DIAGNOSTICS attempted to contact: [rabbit@vm61] rabbit@VMS00386: * unable to connect to epmd (port 4369) on VM61: nxdomain (non-existing domain) current node details: - node name: 'rabbitmqctl-rabbit@vm62' - home dir: /var/lib/rabbitmq - cookie hash: 50YO3zK+HJHos0tab1vHjg==
则需要在每台服务器上添加
vi /etc/hosts vm61 192.168.1.61 vm62 192.168.1.62 vm63 192.168.1.63
即可解决,问题原因为无法解析地址导致的
-
cluster搭建起来后若在web管理工具中rabbitmq_management的Overview的Nodes部分看到“Node statistics not available”的信息,说明在该节点上web管理插件还未启用。 直接在显示提示信息的节点上运行
rabbitmq-plugins enable rabbitmq_management
即可。