首先先把 RabbitMQ 安装好,包括 er-lang ,这里就很少说明了,只针对cluster 建设。
我假设是经过 rpm 的方式安装,那么路径上就比较好解释说明。node
针对rabbitmq 所使用的port,分别为:4369,5672, 15672, 25672 ,所以,最后防火墙别忘了设置容许访问,在设置以前请先关闭防火墙。web
假设有3台服务器,名称分别为:rbmq0, rbmq1, rbmq2, 其中,rbmq0 是主服务器。服务器
而后到3台的服务器中,添加到 /etc/hosts 中,分别为:cookie
X.X.28.116 rbmq0 SVR-28-116
X.X.28.114 rbmq1 SVR-28-114
X.X.28.113 rbmq2 SVR-28-113app
再到每一台中,修改 /etc/rabbitmq/rabbitmq-env.conf 内容以下:tcp
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+A 128"
NODE_PORT=5672
NODENAME=rbmq0 <-- 每一台服务器添加本身服务器的名字,另外两台分别为:rbmq1, rbmq23d
而后先到 rbmq0 上执行 rabbitmq, 这主要是确保3台的rabbitmq 都没有问题,因此请到每一台执行rabbitmq-serverrest
[root@SVR-28-116 ~]# service rabbitmq-server restartserver
只要你没修改 /etc/rabbitmq/rabbitmq.conf 文件, 基本上不会有什么问题。第一次使用,当你执行完毕以后,请到 /var/lib/rabbitmq 目前录找 blog
这个文件是由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