目录
准备工作
#/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策略
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-mode
和Mirrors
,会列出所有同步的镜像节点以及它们的状态。