RabbitMQ 3.6.10 cluster (Centos 6.8)

首先先把 RabbitMQ 安装好,包括 er-lang ,这里就不多说明了,只针对cluster 建设。
我假设是通过 rpm 的方式安装,那么路径上就比较好解释说明。

针对rabbitmq 所使用的port,分别为:4369,5672, 15672, 25672 ,因此,最后防火墙别忘了设置允许访问,在设置之前请先关闭防火墙。

假设有3台服务器,名称分别为:rbmq0, rbmq1, rbmq2, 其中,rbmq0 是主服务器。

然后到3台的服务器中,添加到 /etc/hosts 中,分别为:

X.X.28.116  rbmq0 SVR-28-116
X.X.28.114  rbmq1 SVR-28-114
X.X.28.113  rbmq2 SVR-28-113

再到每一台中,修改 /etc/rabbitmq/rabbitmq-env.conf  内容如下:

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+A 128"
NODE_PORT=5672
NODENAME=rbmq0  <-- 每一台服务器添加自己服务器的名字,另外两台分别为:rbmq1, rbmq2

然后先到 rbmq0 上执行 rabbitmq, 这主要是确保3台的rabbitmq 都没有问题,所以请到每一台执行rabbitmq-server

[root@SVR-28-116 ~]# service rabbitmq-server restart

只要你没修改 /etc/rabbitmq/rabbitmq.conf 文件, 基本上不会有什么问题。第一次使用,当你执行完毕之后,请到 /var/lib/rabbitmq 目前录找 

这个文件是由rabbitmq生成的,第一次执行就会出现在以上的目录中。

然后看下内容:

分别把文件内容复制到另外2台服务器,同样放在 /var/lib/rabbitmq 目录下,你可以用以下方式快速处理。目的就是必须保证3台的 ,erlang.cookie 内容的一至。很重要!!

 

 然后再到第一台rbmq0 执行:

[root@SVR-28-116 ~]# rabbitmqctl cluster_nodes

Cluster status of node 'rbmq0@SVR-28-116'
[{nodes,[{disc,['rbmq0@SVR-28-116']}]},
{running_nodes,['rbmq0@SVR-28-116']},
{cluster_name,<<"rbmq0">>},
{partitions,[]},
{alarms,[{'rbmq0@SVR-28-116',[]}]}]

这时你可以先放一边,再到另外两台上按以下方式分别执行:

rbmq1 Server

[root@SVR-28-114 ~]# service rabbitmq-server start

执行后确保没有问题。

[root@SVR-28-114 ~]# rabbitmqctl stop_app

[root@SVR-28-114 ~]# rabbitmqctl join_cluster rbmq0@SVR-28-116

Clustering node 'rbmq1@SVR-28-114' with 'rbmq0@SVR-28-116'

那就表示已经添加成功

另一台同样也执行

rbmq1 Server

[root@SVR-28-113 ~]# service rabbitmq-server start

执行后确保没有问题。

[root@SVR-28-113 ~]# rabbitmqctl stop_app

[root@SVR-28-113 ~]# rabbitmqctl join_cluster rbmq0@SVR-28-116

Clustering node 'rbmq1@SVR-28-113' with 'rbmq0@SVR-28-116'

表示已经添加成功

然后,我们再到第一台执行:

[root@SVR-28-116 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node 'rbmq0@SVR-28-116'
[{nodes,[{disc,['rbmq0@SVR-28-116','rbmq1@SVR-28-114','rbmq2@SVR-28-113']}]},     <-- 114, 113 已经添加成功

{running_nodes,['rbmq0@SVR-28-116']},
{cluster_name,<<"rbmq0">>},
{partitions,[]},
{alarms,[{'rbmq0@SVR-28-116',[]}]}]

基本上算是已经成功了。接下来再做几件事:

[root@SVR-28-116 rabbitmq]# rabbitmq-plugins enable rabbitmq_management

主要是使用web介面的管理。

访问web:

http://X.X.28.116:15672

可以看到,rbmq1,rbmq2 并没有执行。那么,我们分别到该两台服务器启动rabbitmq-server

service rabbitmq-server start

 基本上算是完成了。

 Firewall

# rabbitmq amqp
-A INPUT -p tcp -m tcp -m state --dport 5672:5673 --state NEW -j ACCEPT
# rabbitmq http management
-A INPUT -p tcp -m tcp -m state --dport 15672 --state NEW -j ACCEPT
# rabbitmq cluster
-A INPUT -p tcp -m tcp -m state --dport 25672 --state NEW -j ACCEPT

# rabbitmq  epmd (port 4369) on mqmaster
-A INPUT -p tcp -m tcp -m state --dport 4369 --state NEW -j ACCEPT

posted @ 2017-08-08 10:06  ray30th  阅读(258)  评论(0编辑  收藏  举报