RabbitMQ集群高可用
1.MQ节点互为镜像
2.HAproxy负载均衡
3.Keeplived高可用
RabbitMQ 的4种集群架构
主备模式(高可用)
主节点提供读写,备用节点不提供读写。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主节点恢复运行后,原来的主节点就变成备用节点,同一时刻只有一个节点在工作(备份节点不能读写)。需要借助HAProxy之类的(VIP模式)负载均衡器来做健康检查和主备切换,底层需要借助共享存储(如SAN设备)。这不是RabbitMQ官方或者开源社区推荐方案,适用于访问压力不是特别大但是又有高可用架构需求(故障切换)的中小规模的系统来使用。首先有一个节点闲置,本身就是资源浪费,其次共享存储往往需要借助硬件存储,或者分布式文件系统。
镜像高可用(高可用,负债均衡)
Mirror 镜像模式,保证 100% 数据不丢失。在实际工作中也是用得最多的,并且实现非常的简单,一般互联网大厂都会构建这种镜像集群模式。mirror 镜像队列,目的是为了保证 rabbitMQ 数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步。对于 100% 数据可靠性解决方案,一般是采用 3 个节点。
用KeepAlived 做了 HA-Proxy 的高可用,然后有 3 个节点的 MQ 服务,消息发送到主节点上,主节点通过 mirror 队列把数据同步到其他的 MQ 节点,这样来实现其高可靠。
1.搭建普通集群(消息分片,数据单点故障,有节点高可用)
集群只共享元数据,数据只保存到其中一个节点,连接RabbitMQ时无法使用类似192.168.80.205:5672,192.168.80.206:5672这种语法实现负载均衡,只能写一个ip:port,这样所有的数据都会存储在这个节点上面,无法实现负载均衡。
2.配置镜像队列(有镜像高可用,没有负债均衡)
RabbitMQ + 镜像队列 + HAProxy 实现负载均衡的集群_穿城大饼的博客-CSDN博客
给队列加镜像需要慎重
3.Haproxy负载均衡(Haproxy单点故障)
4.keepalived(全高可用)
多活模式(集群数据复制)
集群之间异地数据复制,不分数据共享,依赖federation插件
远程模式(集群数据复制)
集群异地复制,配置复杂,依赖shovel插件
- 您不必处理大数据,并且更喜欢方便的内置 UI 进行监控
- 不需要自动复制队列
- 消息没有多个订阅者 - 由于与作为日志的 Kafka 不同,RabbitMQ 是一个队列,一旦消费和确认到达,消息就会被删除
- 如果您有对消息使用通配符和正则表达式的要求
- 如果定义消息优先级很重要
MYSQL集群
MMM
MHA
读写分离
Mysql主从,Mycat读写分离,HAProxy负债均衡