RabbitMQ-镜像队列(Mirrored Queues)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ(本章节)

上个小节我们介绍了RabbitMQ伪集群模式,虽然元数据是同步共享的,但是数据只存在某一台节点,当这个节点宕机以后,整个集群也就出现问题,所以本小节我们介绍一个新的正在的高可用方案:镜像队列(Mirrored Queues)。

宕机之前队列里面有不少数据,如下图。

下图就是宕机以后的队列信息,全部都显示离线。

镜像队列(Mirrored Queues)

下面的配置基于刚才的伪集群,注意这个高可用模式是针对虚拟主机级别配置。

css 复制代码
./sbin/rabbitmqctl set_policy ha-all "^" '{
  "ha-mode": "exactly",
  "ha-params": 3,
  "ha-sync-mode": "automatic",
  "queue-master-locator": "min-masters"
}' --priority 10 --apply-to queues

上面的配置是就是设置默认的虚拟主机"/":

规则名字:ha-all。

针对队列:^ 代表所有队列。

镜像模式:静态指定(还有是所有节点都有镜像和指定节点有影响)。

镜像数量:3 (一主2个镜像)。

同步模式:自动同步,新节点加入时候会同步历史数据。

选主策略:节点宕机以后选举策略(最少master节点)。

策略优先级:10数值越高优先级越高,范围 0-99。

针对对象:队列,其他本身就高可用。

如果要设置其他虚拟主机或者查看其他虚拟主机则可以使用 -p xxx。

sql 复制代码
[root@rabbitmq01 rabbitmq_server-3.8.35]# ./sbin/rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost	name	pattern	apply-to	definition	priority
/	ha-all	^	queues	{"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic","queue-master-locator":"min-masters"}	10

这个时候,我们查看当前的镜像节点不同的队列就有不同的队列。

perl 复制代码
[root@rabbitmq01 rabbitmq_server-3.8.35]# ./sbin/rabbitmqctl list_queues name messages synchronised_slave_pids
Timeout: 60.0 seconds ...
Listing queues for vhost / ...
name	messages	synchronised_slave_pids
test06	0	[<rabbit@rabbitmq02.1749892590.4412.1>, <rabbit@rabbitmq03.1749894297.1354.1>]
test07	0	[<rabbit@rabbitmq02.1749892590.4435.1>, <rabbit@rabbitmq03.1749894297.1392.1>]
test04	0	[<rabbit@rabbitmq03.1749894297.1344.1>, <rabbit@rabbitmq02.1749892590.4462.1>]
test02	1391	[<rabbit@rabbitmq02.1749892590.4429.1>, <rabbit@rabbitmq03.1749894297.1368.1>]
test05	0	[<rabbit@rabbitmq02.1749892590.4432.1>, <rabbit@rabbitmq03.1749894297.1389.1>]

离线一个节点还可以正常生产消息和消息消息。

这样就可以实现集群的高可用。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
翼龙云_cloud4 分钟前
云代理商:Hermes Agent在量化交易中的实战应用
运维·服务器·人工智能·ai智能体·hermes agent
ch3nyuyu11 分钟前
网络编程拟面试题
linux·网络
无限进步_18 分钟前
【Linux】Makefile:让编译自动化
linux·运维·自动化
猫头虎21 分钟前
【Trea】Trea国内版|国际版|海外版下载|Mac版|Windows版|Linux下载配置教程
linux·人工智能·windows·macos·aigc·ai编程·agi
Jinkxs21 分钟前
LoadBalancer- 简单限流策略:Nginx 基于连接 / 请求的限流实现
java·运维·nginx
流浪00129 分钟前
告别静态打印:Linux C 实现实时刷新进度条
linux·运维·c语言
qq_1969761731 分钟前
硬核教程:用Gemini境像站构建端到端自动化办公工作流,告别重复操作(国内免费镜像实测)
运维·自动化
小此方31 分钟前
Re:Linux系统篇(二十)进程篇·五:深入理解 Linux 进程优先级:从底层逻辑到实战修改
linux·运维·服务器
路溪非溪32 分钟前
Linux下物理总线驱动模型之SDIO驱动框架
linux·驱动开发
深圳市九鼎创展科技33 分钟前
九鼎创展 X7110 开发板(JH7110):国产 RISC-V 多媒体平台全解析
大数据·linux·人工智能·嵌入式硬件·ubuntu·risc-v