用docker-compose 搭建 rabbitmq集群

rabbitmq高可用集群
一般在并发和数据量不高的情况下,这种模式非常的好用且简单。 也就是一个主/备方案,主节点提供读写,备用节点不提供读写。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主 节点恢复运行后,原来的主节点就变成备用节点,和 activeMQ 利用 zookeeper 做主/备一样,也可以一主多备
在这里插入图片描述
在服务之间会采用mq进行消息通信,而rabbitmq本身也如同consul一样,如果只有一个节点那么就可能出现宕机的问题,并且基于mq的特点我们是可以在多个服 务之间使用同一个mq来相互通信,因此高可用的架构设计就必不可少
1.主备模式
一般在并发和数据量不高的情况下,这种模式非常的好用且简单。 也就是一个主/备方案,主节点提供读写,备用节点不提供读写。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主 节点恢复运行后,原来的主节点就变成备用节点,和 activeMQ 利用 zookeeper 做主/备一样,也可以一主多备
在这里插入图片描述
2. 远程模式
这是 rabbitMQ 比较早期的架构模型了,现在很少使用了 远程模式可以实现双活的一种模式,简称 shovel 模式,所谓的 shovel 就是把消息进行不同数据中心的复制工作,可以跨地域的让两个 MQ 集群互联,远距离通信 和复制 Shovel 就是我们可以把消息进行数据中心的复制工作,我们可以跨地域的让两个 MQ 集群互联。
在这里插入图片描述
如图所示,有两个异地的 MQ 集群(可以是更多的集群),当用户在地区 1 这里下单了,系统发消息到 1 区的 MQ 服务器,发现 MQ 服务已超过设定的阈值,负 载过高,这条消息就会被转到 地区 2 的 MQ 服务器上,由 2 区的去执行后面的业务逻辑,相当于分摊我们的服务压力 在使用了 shovel 插件后,模型变成了近端同步确认,远端异步确认的方式,大大提高了订单确认速度,并且还能保证可靠性
3. 远程模式
非常经典的 mirror 镜像模式,保证 100% 数据不丢失。在实际工作中也是用得最多的,并且实现非常的简单,一般互联网大厂都会构建这种镜像集群模式。 mirror 镜像队列,目的是为了保证 rabbitMQ 数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是 2 - 3 个节点实现数据同步。对于 100% 数据可靠性 解决方案,一般是采用 3 个节点。
在这里插入图片描述
如上图所示,用 KeepAlived 做了 HA-Proxy 的高可用,然后有 3 个节点的 MQ 服务,消息发送到主节点上,主节点通过 mirror 队列把数据同步到其他的 MQ 节 点,这样来实现其高可靠。
4. 多活模式
也是实现异地数据复制的主流模式,因为 shovel 模式配置比较复杂,所以一般来说,实现异地集群的都是采用这种双活 或者 多活模型来实现的。这种模式需要依 赖 rabbitMQ 的 federation 插件,可以实现持续的,可靠的 AMQP 数据通信,多活模式在实际配置与应用非常的简单。 rabbitMQ 部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心各部署一套 rabbitMQ集群,各中心的rabbitMQ 服务除了需要为业务提供正常的消息服 务外,中心之间还需要实现部分队列消息共享。 多活集群架构如下:
在这里插入图片描述
拉取镜像
docker pull rabbitmq
3.2. 构建rabbitmq镜像集群
参考资料
https://blog.51cto.com/11134648/2155934 https://www.jianshu.com/p/5b2879fba25b
Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存 放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节点cookie一致,不然节点之间就无法通信。 首先我们可以如下的方式构建
本次课程以3为主,2,4节点均是加入到3集群中
注意统一配置共享目录下的 .erlang.cookie 参数值
这个参数值,并非固定值,而是基于erlang的cookie规则而编辑的,因此你也可以改为其他,最为重要的就是cookie一致
如下是docker-compose
在这里插入图片描述
在这里插入图片描述

然后再构建容器 docker-compose up -d
docker exec -it rabbimq_server_172_2 bash
docker exec -it rabbimq_server_172_4 bash
一起修改里面的hosts与hostname
在这里插入图片描述
下一步配置rabbitmq在2,4节点中统一执行如下命令
root@mq2:/# rabbitmqctl stop_app
在这里插入图片描述
最后测试
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值