CentOS Linux 6.X 下配置RabbitMQ高可靠性集群

一、工作环境
两个节点,IP分别是192.168.1.11和192.168.1.12,主机名分别是test1和test2
二、安装RabbitMQ
参考《CentOS Linux下安装RabbitMQ》,分别在两个节点上安装Erlang和RabbitMQ。

三、修改/etc/hosts
两个节点的hosts上都加上下面的描述

192.168.1.11 test1
192.168.1.12 test2

四、设置Erlang Cookie
将test1中的Erlang Cookie 文件:/var/lib/rabbitmq/.erlang.cookie复制到test2,由于这个文件权限是 400,所以需要先修改test2中的该文件权限为 777。

chmod 777 /var/lib/rabbitmq/.erlang.cookie

然后通过scp将test1上的erland cookie文件拷贝到test2,完成后将test2上的erland cookie文件的权限设置回来

chmod 400 /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq /var/lib/rabbitmq/.erlang.cookie
chgrp rabbitmq /var/lib/rabbitmq/.erlang.cookie

五、停止各个节点的RabbitMQ服务

/etc/init.d/rabbitmq-server stop

六、使用 -detached 参数运行各节点

rabbitmq-server -detached

七、组建集群
将test2和test1组成集群,在test2上运行下面的指令

rabbitmqctl stop_app 
rabbitmqctl join_cluster rabbit@test1
rabbitmqctl start_app

集群配置好后,可以在 RabbitMQ 任意节点上执行

rabbitmqctl cluster_status 

来查看是否集群配置成功。
出现如下字样就是配置成功,

Cluster status of node rabbit@test1 ...
[{nodes,[{disc,[rabbit@test1,rabbit@test2]}]},
 {running_nodes,[rabbit@test2,rabbit@test1]},
 {cluster_name,<<"rabbit@test2">>},
 {partitions,[]}]

八、设置镜像队列策略
在任意一个节点上执行

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一致。

九、安装并配置 HAProxy
在 192.168.1.13 上安装 HAProxy,然后修改 /etc/haproxy/haproxy.cfg

listen rabbitmq_cluster 0.0.0.0:5672
 
mode tcp
balance roundrobin
 
server   node1 192.168.1.11:5672 check inter 2000 rise 2 fall 3  
server   node2 192.168.1.12:5672 check inter 2000 rise 2 fall 3

十、设置开机启动
关闭rabbitmq-server自启动服务

chkconfig rabbitmq-server off

编辑rc.local,加入集群配置后的启动命令

vi /etc/rc.local
/usr/sbin/rabbitmq-server -detached

除非注明,本博客文章均为原创,转载请以链接形式标明本文地址

本文地址: http://blog.cnwyhx.com/centos-linux-6-x-install-ha-rabbitmq-cluster

Leave a Reply