第一:主备模式:实现RabbitMq的高可用集群,一般在并发和数量不高的情况下,这种模式非常的好用且简单,主备模式也称之为Warren模式。
主节点挂了,从节点提供服务而已,和activemq利用zookeeper做主备一样。
HaProxy配置:
listen rabbitmq_cluster
bind ip:port
mode tcp 配置tcp模式
balance roundrobin 主节点 简单的轮询
server name1 ip:port check inter 5000 rist 2 fall 2 主节点
server name2 ip:port backup check inter 5000 rist 2 fall 2 备用节点
备注:rabbitMq集群每隔五秒钟(inter)对rabbitmq集群做健康检查,
2次 正确证明服务器可用,2 次失败证明服务器不可用,并且配置主备机制。
远程模式:
可以实现双活的一种模式,简称Shovel模式,所谓Shovel模式就是我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个mq集群互联。
使用了Shovel插件,模型变成了近端同步确认,远端异步确认的方式,大大提高了订单确认速度,并且还能保证可靠性。
如何操作:
Shovel配置,首先启动rabbitmq插件,命令如下:
rabbitmq-plugins enable ampq-client
tabbitmq-plugins enable rabbitmq_shovel
创建配置文件:
rabbitmq.config文件:touch /etc/rabbitmq/rabbitmq.config
添加配置文件rabbitmq.config
最后我们需要服务器和目的地服务器都使用想通的配置文件
具体配置:www.baidu.com
镜像模式:
集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的,并且实现集群非常的简单,一般互联网大厂都会用这种镜像模式。
Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性 解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于高可靠性解决方案一般是3个节点)
多活模式:
这种模式也是实现异地复制的主流模式,因为Shovel模式配置比较复杂,所以一般来说实现异地模式都是使用这种双活或者多活模型来实现的。这种模型需要依赖rabbitmq的federation插件,可以实现持续可靠的AMQP数据通信,多活模式在实际配置与应用中非常简单。
(一)
RabbitMq部署架构采用双中心模式(多中心),那么在两套或者多套数据中心部署一套RabbitMq集群,各中心的RabbitMq服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部门队列共享。
Federation是一个不需要构建Cluster,而在Brokers之间传递的高性能插件,Federation插件可以在Brokers或者CLuster之间传递消息,链接的双方可以使用不同的users和 virtual host,双方也可以使用版本不同的RabbitMq和Erlang,Federation插件使用 AMQP协议通讯,可以接受不连续的传输。
Federation exchange,可以看成下游从上游拉取消息,但并不是拉取所有的消息,必须是在下游已经明确定义绑定关系的exchange,也就是实际的物理queue来接受消息,才会从上游拉取消息到下游,使用AMQP协议实现代理通信,下游将会绑定关系组合在一起,绑定和解绑命令发送到上游交换机,因此,Federation exchange只接受具有订阅消息,官方图片如下: