rabbitMQ 高可用

如何实现RabbitMQ高可用

我们先搭建一个普通集群模式,在这个模式基础上再配置镜像模式实现高可用,Rabbit集群前增加一个反向代理,生产者、消费者通过反向代理访问RabbitMQ集群

在一个集群里,有4台机器,其中1台使用磁盘模式,另2台使用内存模式

2台内存模式的节点,无疑速度更快,因此客户端(consumer、producer)连接访问它们

磁盘模式的节点,由于磁盘IO相对较慢,因此仅作数据备份使用

一台作为反向代理

负载均衡器会监听5672端口,轮询我们的两个内存节点172.16.3.7、172.16.3.8的5672端口,172.16.3.2为磁盘节点,只做备份不提供给生产者、消费者使用

如果我们服务器资源充足情况也可以配置多个磁盘节点,这样磁盘节点出了故障也不会影响,除非同时出故障。

使用Rabbit镜像功能,需要基于rabbitmq策略来实现,政策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为在cluster中任意节点启用策略,策略会自动同步到集群节点

rabbitmqctl set_policy -p hrsystem ha-allqueue "^" '{"ha-mode":"all"}'

这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 "^" 表示所有匹配所有队列名称。

例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'

注意:"^message" 这个规则要根据自己修改,这个是指同步"message"开头的队列名称,我们配置时使用的应用于所有队列,所以表达式为"^"

官方set_policy说明参见

set_policy -p vhostpath {name} {pattern} {definition} priority

相关推荐
HideF8 小时前
Linux sudo
linux
FlightYe8 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎9 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
牛马鸡niumasi10 小时前
【Linux】C语言文件操作
linux
say_fall10 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii11 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
AI+程序员在路上11 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
默|笙12 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
相思难忘成疾12 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
用户41071920132512 小时前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu