Centos系统下RabbitMQ集群部署流程记录(二)

上一篇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页管理截图