RabbitMQ双机-镜像-集群模式

准备工作

#/etc/hosts
172.16.0.11 rabbitmq01
172.16.0.12 rabbitmq02

组建集群

rabbitmq01

rabbitmq-server -detached
rabbitmqctl status

#复制cookie
cp ~/.erlang.cookie rabbitmq02:~/

rabbitmq02

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq01 #默认为磁盘节点
rabbitmqctl start_app
rabbitmqctl cluster_status

设置HA策略【来源:通义千问2.5】

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to queues
rabbitmqctl list_policies

这条命令将使所有匹配模式 ^(即所有)按照指定的策略进行镜像。

ha-mode 设置为 all 表示所有的节点都会成为该队列的副本;

ha-sync-mode 设置为 automatic 表示自动同步队列内容。

--apply-to queues 为所有队列设置镜像策略,而不影响交换器

注意

如果没有指定--apply-to,则为all: 策略同时应用于队列和交换器

潜在的问题:

  • 不必要的配置:对于不需要应用策略的资源类型,这可能导致不必要的配置,增加管理复杂度。
  • 性能影响:如果策略涉及到额外的操作(如同步、复制等),则可能无意中增加了系统的负担。
  • 混淆与误解:团队成员可能会因为不清楚策略的实际作用范围而感到困惑,进而影响系统的维护和故障排查。
  • 兼容性问题:某些策略可能不适合特定类型的资源。比如,将一个设计用于队列的 TTL 策略错误地应用到了交换器上,可能会引发未定义的行为或错误。

https://www.rabbitmq.com/docs/3.13/parameters#operator-policy-definition

补充

# 想加入内存节点, join_cluster 要加 --ram 

#更改节点为磁盘或内存节点
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type <disc|ram>
rabbitmqctl start_app

# 退出集群命令
rabbitmqctl forget_cluster_node rabbit@rabbitmq01

命令行检验

## 查看集群状态
rabbitmqctl cluster_status
## 检查队列同步状态
rabbitmqctl list_queues name synchronised_slave_pids

登录管理界面检验

进入“Queues”页面,找到配置了镜像策略的目标队列,点击队列名称查看详细信息。

在队列详情页Details中,能看到ha-modeMirrors,会列出所有同步的镜像节点以及它们的状态。

posted @   M1927  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示