概要:主备模式(简单)、远程模式(少)、镜像模式(用得最多)、 多活模式(多)
一. 主备模式(简单)
也称Warren (兔子窝) 模式。并发和数据量不高,好用且简单。
也就是一个主/备方案,主读写,备不提供读写。主挂切备,原主节恢复变备,和 activeMQ 用 zookeeper 做主/备一样,也可一主多备。
HaProxy 配置:
listen rabbitmq_cluster
bind 0.0.0.0:567 # 配置 tcp 模式
mode tcp # 简单的轮询
balance roundrobin # 主节点 roundrobin 随机
server 你的76机器 hostname 192.168.11.76:5672 check inter 5000 rise 2 fall 2
server 你的77机器 hostname 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2 # 备用节点
注意了,上面的 rabbitMQ 集群节点配置 # inter 每隔 5 秒对 mq 集群做健康检查, 2 次正确证明服务可用,2 次失败证明服务器不可用,并且配置主备机制
二. 远程模式(少)
1、可实现双活,简称 shovel,把消息进行不同数据中心的复制工作,跨地域MQ 集群互联,远距离通信和复制。ps:rabbitMQ 早期架构,很少用
例:用户地区 1 下单,发消息到 1 ,发现 MQ 超过设定阈值,负载过高,消息被转到 地区 2 ,分摊服务压力。
近端同步确认,远端异步确认,提高确认速度,保证可靠性。
2、shovel 模式拓扑图
消息到 exchange,负载不高放正常的 warehouse_goleta 队列中,过高放到 backup_orders 队列中。backup_orders 队列通过 shovel 与另外MQ 集群同步,发到第二个 MQ 集群
3、shovel 集群的配置,首先启动 rabbitmq 插件,命令如下:
rabbitmq-plugins enable amqp_client
rabbitmq-plugins enable rabbitmq_shovel
在 /etc/rabbitmq/ 目录下创建 rabbitmq.config 文件。注意,我们源服务器和目的地服务器都使用这个相同的配置文件。具体配置如下:
三. 镜像模式(用得最多)
经典mirror 模式,实现数据同步,一般2、3个节点,保证 100% 数据不丢失( 3 个节点)。
用 KeepAlived 做 HA-Proxy 高可用,消息发主节点,主节点通过 mirror 队列同步数据到其他节点,实现高可靠。
四、 多活模式(多)
1、实现异地复制的主流,因为 shovel 配置复杂。要依赖 rabbitMQ 的 federation 插件,实现持续、可靠AMQP 数据通信
2、除rabbitMQ 集群,各中心间要实现部分队列消息共享
3、federation: 在 brokers 间传消息,不需构建cluster高性能插件,连接双方可用不同 users 和 virtual hosts,不同版本rabbitMQ 和 erlang。
4、federation用 AMQP 协议通信,可接受不连续传输。federation 建立在单个节点上(不是集群上),如图上黄色rabbit node 3 可与绿色node1、node2、node3 任意一个用 federation 同步数据
5、如下图2,federation exchanges 可看成 downstream 从 upstream 主动拉取消息,并不拉所有消息,必须在 downstream 上已明确定义 Bingdings 关系 exchange,就是有实际的物理 queue 接收消息才拉
ps:用 AMQP,downstream 将绑定关系组合一起,绑定/解绑命令发送到 upstream 交换机。因此,federation exchange 只接收具有订阅的消息。
https://www.jianshu.com/p/b7cc32b94d2a
镜像搭建:https://www.yisu.com/zixun/115327.html
高可用:https://blog.csdn.net/woogeyu/article/details/51119101
网友评论