RabbitMQ镜像集群搭建
RabbitMQ镜像集群搭建
本文主要记录RabbitMQ镜像集群的搭建方法。
RabbitMQ集群架构模式
-
主备模式(Warren)
实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单。简单来说就是集群至少有两台RabbitMQ服务器,这两台服务器一台在工作一台在闲置,当工作的服务器出现故障则切换到备份的服务器,以此来实现高可用。但是主备模式有其弊端,那就是负载不均衡,一台忙的忙死,一台没事儿干。在实际开发中,一般不使用主备模式,这会造成MQ资源的浪费。 -
镜像模式(Mirror)
集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失(夸张了),在实际工作中也是用的最多的,并且实现集群非常简单。简单来说就是集群中所有的节点即每一台MQ的服务器数据都是同步的,并且所有的服务器都在工作,我们在集群的前面使用一个TCP代理(nginx/haproxy)来做负载均衡,如果一台MQ服务器出异常了,集群中其他的MQ服务器立马顶上。 -
远程模式(Shovel)
远程模式是可以实现双活的一种模式,简称Shovel模式,所谓Shovel就是我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个MQ集群互联,该模式要求比较高,配置也比较复杂。在实际的开发中,基本不用,如果要搭建多个数据中心的集群一般使用第四种方式。 -
多活模式(Federation)
这种模式也是实现异地数据复制的主流模式,因为Shovel模式配置比较复杂,所以一般来说实现异地集群都是使用双活或者多活模型来实现。简单来说双活模式就是一种可以容灾的机制,比如我们在北京和成都分别搭建两个MQ的集群,这两个集群数据都是同步的,当两个集群都可以访问的时候,可以采用距离或者响应速度选择最优的一个集群访问,当一个地方的集群出现宕机可以立马切换到另一个地方的集群。这种模型需要依赖RabbitMQ和Federation插件,可以实现持续可靠的AMQP数据通信,多活模式在实际配置与应用中都非常简单。
使用环境
- 两台腾讯云服务器,分别安装Centos7的Linux系统;
- 两台服务器均提前安装RabbitMQ服务器,具体安装教程看这里。
Mirror集群搭建
-
修改两台服务器的hostname
第一台:
vim /etc/hostname
mq1
第二台:<