上一篇Centos系统下RabbitMQ集群部署流程记录(一)中我记录了,普通集群的部署步骤,但普通集群不是我们想要的,毕竟普通集群模式下:
对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。
当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。
所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。
该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。
如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……
所以,我们还是选择了镜像模式,这样更保险,新增一台服务器192.168.1.191,下面前三个步骤需要在192.168.1.191这台服务器上部署操作。
一、安装负载均衡器HAProxy
1 | # yum -y install haproxy |
二、配置HAProxy
1 2 | # cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak # vim /etc/haproxy/haproxy.cfg |
新增如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | listen rabbitmq_cluster 0.0.0.0:5672 mode tcp option tcplog balance roundrobin server rabbitmq1 192.168.1.192:5672 check inter 2000 rise 2 fall 3 server rabbitmq2 192.168.1.193:5672 check inter 2000 rise 2 fall 3 server rabbitmq3 192.168.1.194:5672 check inter 2000 rise 2 fall 3 listen private_monitoring :8100 mode http option httplog stats enable stats uri /stats stats refresh 60s |
三、启动HAProxy服务
1 | # service haproxy start |
四、配置RabbitMQ 镜像策略
在cluster(192.168.1.192,192.168.1.193,192.168.1.194)中任意节点启用策略,策略会自动同步到集群节点
1 | # rabbitmqctl set_policy -p / ha-allqueue "^" '{"ha-mode":"all"}' |
这个时候,消费者、生产者直接连接192.168.1.191即可。
完成了,整个RabbitMQ镜像集群部署完毕,多说细节配置区别我均没有做特别说明,因为在部署过程中,不想干扰太多,后续我会慢慢的分享出来。
附上HAProxy与RabbitMQ WEB页管理截图