本章导航
- 了解RabbitMQ集群架构模式
- 构架高可靠RabbitMQ集群
- 集群配置文件与集群运维故障、失败转移讲解
- 高级插件的使用
5.1RabbitMQ集群架构模式
一、主备模式
- 主备模式:实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用和简单。主备模式也称之为Warren模式
- 主备和主从的区别在于主备中主节点是提供读写的而从节点不提供读写,只是一个备份节点
- 所谓的rabbitmq另一种模式就是warren(兔子窝),就是一个主、备方案(主节点如果挂了,从节点提供服务而已和activemq利用Zookeeper做主备一样)
-
HaProxy配置
listen rabbitmq_cluster
bind 0.0.0.0:5672 #配置tcp模式
mode tcp #简单的轮询
balance roundrobin #主节点
server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 2
server bhz77 192.168.11.76:5672 backup check inter 5000 rise 2 fall 2 #备用节点 -
备注:rabbitmq集群节点配置#inter每隔五秒对mq集群做健康检查,2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
二、远程模式
-
远程模式:远程模式可以实现双活的一种模式,简称Shovel模式,所谓Shovel就是我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个mq集群互联
-
远距离通信和复制,所谓Shovel就是我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个mq集群互联,架构模式如下
-
使用shovel插件后,模型变成了近端同步确认,远端异步确认,提高订单确认速度,保证可靠性
-
shovel集群配置,首先启动rabbitmq插件,命令如下:
-
rabbitmq-plugins enable amqp_client
-
rabbitmq-plugins enable rabbitmq_shovel
-
创建rabbitmq.config文件 touch /etc/rabbitmq/rabbitmq.config
-
添加配置见rabbitmq.config
-
最后我们需要源服务器和目的服务器都使用相同的配置文件(rabbitmq.config)
三、镜像模式
- 镜像模式:集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。
- Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3节点)
四、多活模式
- 多活模式:实现异地数据复制的主流模式,因为shovel模式配置复杂,一般来说实现异地集群都是使用这种双活或者多活模型来去实现,这种模型需要依赖rabbitmq的federation插件,可以实现持续的可靠的AMQP数据通信,多活模式在实际配置与应用非常简单
- RabbitMQ部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心各部署一套RabbitMQ集群,各中心RabbitMQ服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享
- Federation插件是一个不需要构建Cluster,而在Brokers之间传输消息的高性能插件,Federation插件可以在Brokers或者Cluster之间传输消息,连接的双方可以使用不同的users和virtual hosts,双方也可以使用版本不同的RabbitMQ和Erlang。Federation插件使用AMQP协议通讯,可以接受不连续的传输
- Federation Exchange,可以看成Downstream从Upstream主动拉取消息,但并不是拉取所有消息,必须是在Downstream上已经明确定义Bindings关系的Exchange,也就是有实际物理Queue来接受消息,才会从Upstream拉取消息到Downstream。使用AMQP协议实施代理间通信,Downstream会将绑定关系组合在一起,绑定、解除绑定命令将发送到Upstream交换机、因此,Federation Exchange只接收具有订阅的消息,如下图