RabbitMQ 雙機 映象叢集模式

M1927發表於2024-12-03

目錄
  • 準備工作
  • 組建叢集
    • 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-modeMirrors,會列出所有同步的映象節點以及它們的狀態。

相關文章