为了把RabbitMQ实施到项目中,我们计划使用集群部署,所以特地在测试环境中进行了集群部署测试,本测试过程中部署了3台服务器,Centos 6.5(64位),特记录如下操作。
思路:
那么具体如何实现RabbitMQ高可用,我们先搭建一个普通集群模式,在这个模式基础上再配置镜像模式实现高可用,Rabbit集群前增加一个反向代理,生产者、消费者通过反向代理访问RabbitMQ集群。
架构图如下:图片来自http://www.nsbeta.info
一、设置服务器HOST名称
将三台服务器分别设置为 rabbitmq1、rabbitmq2、rabbitmq3 [修改方法参考:CentOS如何修改主机名 hostname]
二、修改主机文件
1 2 3 4 | # vi /etc/hosts 192.168.1.192 rabbitmq1 192.168.1.193 rabbitmq2 192.168.1.194 rabbitmq3 |
三、设置每个节点Cookie(Erlang Cookie)[非常关键]
3.1 三台服务器先修改文件权限(默认地址为:/var/lib/rabbitmq/.erlang.cookie)
1 | # chmod 777 /var/lib/rabbitmq/.erlang.cookie |
3.2 读取其中一个节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。
cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中。
3.3 三台服务器恢复文件权限
1 | # chmod 400 /var/lib/rabbitmq/.erlang.cookie |
3.4 三台服务器重起服务
1 | # rabbitmqctl stop |
1 | # rabbitmq-server start |
四、设置同步
4.1停止服务(三台服务器均要操作)
1 | # rabbitmqctl stop |
4.2重置服务(三台服务器均要操作)
1 | # rabbitmqctl reset |
4.3后台启动节点(三台服务器均要操作)
1 | # rabbitmq-server -detached |
4.4查看节点状态(三台服务器均要操作)
1 | # rabbitmqctl status |
五、建立集群(默认就为:普通模式)
以rabbitmq1为主节点,在rabbitmq2上操作如下步骤:
5.1停止服务
1 | # rabbitmqctl stop_app |
5.2重置服务
1 | # rabbitmqctl reset |
5.3加入集群
默认为硬盘模式(二选一)
1 | # rabbitmqctl join_cluster rabbit@rabbitmq1 |
可更改为内存模式(二选一)
1 | # rabbitmqctl join_cluster --ram rabbit@rabbitmq1 |
5.4启用节点服务
1 | # rabbitmqctl start_app |
rabbitmq2上的操作与rabbitmq3的雷同。
最后通过rabbitmqctl cluster_status查看集群的状态信息.
到此,RabbitMQ集群就部署完毕,所有的RabbitMQ用户、交换机等全部都是同步的,除了消息内容;