目錄
- 準備工作
- 組建叢集
- rabbitmq01
- rabbitmq02
- 設定HA策略
- 注意
- 補充
- 命令列檢驗
- 登入管理介面檢驗
準備工作
#/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
,會列出所有同步的映象節點以及它們的狀態。