Microservice微服务

MQ RabbitMQ 集群部署入门

2021-04-18  本文已影响0人  小P聊技术

1 简介

rabbitmq集群架构,包含主备模式、远程模式、镜像模式、多活模式。

2 主备模式

2.1 介绍

也称为 Warren (兔子窝) 模式。一个主/备方案 (activeMq 通过 zookeeper做主备)。

实现 rabbitMQ 的高可用集群,一般在并发和数据量不高的情况下,这种模式非常的好用且简单。

也就是一个主/备方案,主节点提供读写,备用节点不提供读写。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主节点恢复运行后,原来的主节点就变成备用节点,和 activeMQ 利用 zookeeper 做主/备一样,也可以一主多备。

在这里插入图片描述

2.2 配置

主备模式 - 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 bhz76 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2  # 备用节点

注意了,上面的 rabbitMQ 集群节点配置 # inter 每隔 5 秒对 mq 集群做健康检查, 2 次正确证明服务可用,2 次失败证明服务器不可用,并且配置主备机制

3 远程模式

3.1 介绍

远程模式可以实现双活的一种模式,简称 shovel 模式,所谓的 shovel 就是把消息进行不同数据中心的复制工作,可以跨地域的让两个 MQ 集群互联,远距离通信和复制。

Shovel 就是我们可以把消息进行数据中心的复制工作,我们可以跨地域的让两个 MQ 集群互联。


在这里插入图片描述

如图所示,有两个异地的 MQ 集群(可以是更多的集群),当用户在地区 1 这里下单了,系统发消息到 1 区的 MQ 服务器,发现 MQ 服务已超过设定的阈值,负载过高,这条消息就会被转到 地区 2 的 MQ 服务器上,由 2 区的去执行后面的业务逻辑,相当于分摊我们的服务压力。

在使用了 shovel 插件后,模型变成了近端同步确认,远端异步确认的方式,大大提高了订单确认速度,并且还能保证可靠性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y4nHBAGh-1618708604744)(MQ RabbitMQ 集群部署入门.assets/9167995-4da4baa654dfc446.png)]

如上图所示,当我们的消息到达 exchange,它会判断当前的负载情况以及设定的阈值,如果负载不高就把消息放到我们正常的 warehouse_goleta 队列中,如果负载过高了,就会放到 backup_orders 队列中。backup_orders 队列通过 shovel 插件与另外的 MQ 集群进行同步数据,把消息发到第二个 MQ 集群上。

3.2 配置

这是 rabbitMQ 比较早期的架构模型了,现在很少使用了。

shovel 集群的配置,首先启动 rabbitmq 插件,命令如下:

rabbitmq-plugins enable amqp_client

rabbitmq-plugins enable  rabbitmq_shovel

在 /etc/rabbitmq/ 目录下创建 rabbitmq.config 文件。注意,我们源服务器和目的地服务器都使用这个相同的配置文件。

具体配置如下:

在这里插入图片描述

4 镜像模式

4.1 介绍

集群模式中非常经典的就是Mirror镜像模式,保证数据100%不丢失。使用最多,集群比较简单,一般互联网大厂都会构建这种镜像集群模式。

mirror 镜像队列,目的是为了保证 rabbitMQ 数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是 2 - 3 个节点实现数据同步。对于 100% 数据可靠性解决方案,一般是采用 3 个节点。

集群架构如下:

在这里插入图片描述

4.2 配置

<font color=red>附:详细部署方案会在后面的文章中详细介绍</font>

5 多活模式

5.1 介绍

也是实现异地数据复制的主流模式,因为 shovel 模式配置比较复杂,所以一般来说,实现异地集群的都是采用这种双活 或者 多活模型来实现的。这种模式需要依赖 rabbitMQ 的 federation 插件,可以实现持续的,可靠的 AMQP 数据通信,多活模式在实际配置与应用非常的简单。

rabbitMQ 部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心各部署一套 rabbitMQ 集群,各中心的rabbitMQ 服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享。

在这里插入图片描述 在这里插入图片描述

5.2 配置

6 MQ RabbitMQ 集群部署入门

上一篇 下一篇

猜你喜欢

热点阅读