文章目錄
如何在 Windwos 上設定 RabbitMQ Cluster
現在的系統都需要考慮大流量的情境,而系統中承載力最差的節點也就是系統的整體承載量。一般的概念就是哪個節點扛不住就加那個節點的 server (除了 db 之外),而 message queue 本身是所有訊息都會經過的一個 component,很容易是效能瓶頸點,所以如果預期使用量很高時或是想要達成 HA - High availability 就需要為 RabbitMQ 加入 Cluster 機制
最近剛好為專案設定 RabbitMQ 的 Cluster,需要注意的地方還不少,一定要紀錄一下不然相信很快就會忘記了
環境前提
請先安裝好兩組 RabbitMQ,如何在 Windows 安裝 RabbitMQ 請參考 在 Windows 7、Winodws 10、Windows Server 2016 上安裝 RabbitMQ
設定 RabbitMQ Cluster
以下動作在 RabbitMQ 的 slave 上操作
stop service
如未成功停止 service 會造成後續動作認證失敗
指令
sc stop RabbitMQ
GUI
改 cookie
為了讓各組 RabbitMQ 可以認識彼此,請選定其中一組 RabbitMQ 將其 cookie 複製至其他 RabbitMQ 中使用
位置
C:\Windows\.erlang.cookie
供 RabbitMQ service 使用
C:\Users\Current User\.erlang.cookie (%HOMEDRIVE% + %HOMEPATH%\.erlang.cookie)
orC:\Documents and Settings\Current User\.erlang.cookie
上述兩個 cookie 內容需一致
restart service
指令
sc start RabbitMQ
GUI
如果出現錯誤訊息,表示修改 cookie 前未成功停止 service,請恢復舊 cookie 再重新操作一次
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmqctl.bat stop_app Stopping rabbit application on node 'rabbit@DESKTOP-1JHUOUJ' ... Error: unable to connect to node 'rabbit@DESKTOP-1JHUOUJ': nodedown DIAGNOSTICS =========== attempted to contact: ['rabbit@DESKTOP-1JHUOUJ'] rabbit@DESKTOP-1JHUOUJ: * connected to epmd (port 4369) on DESKTOP-1JHUOUJ * epmd reports node 'rabbit' running on port 25672 * TCP connection succeeded but Erlang distribution failed * Authentication failed (rejected by the remote node), please check the Erlang cookie current node details: - node name: 'rabbitmq-cli-86@DESKTOP-1JHUOUJ' - home dir: C:\Users\yowko - cookie hash: OCvdsgdfggdsfgsdfgYxA==
錯誤畫面
重啟後成功
停止 RabbitMQ
開啟 RabbitMQ 附屬的 Command 工具 -
RabbitMQ Command Prompt (sbin dir)
執行停止 rabbitmq
rabbitmqctl stop_app
加入 Cluster
- 繼續使用 RabbitMQ 附屬的 Command 工具 -
RabbitMQ Command Prompt (sbin dir)
將該 rabbitmq 加至 master 的 cluster 中
語法
rabbitmqctl join_cluster rabbit@{MACHINENAME}
範例
rabbitmqctl join_cluster rabbit@YowkoPC
- 繼續使用 RabbitMQ 附屬的 Command 工具 -
重啟 RabbitMQ
- 繼續使用 RabbitMQ 附屬的 Command 工具 -
RabbitMQ Command Prompt (sbin dir)
執行重啟 rabbitmq
rabbitmqctl start_app
- 繼續使用 RabbitMQ 附屬的 Command 工具 -
完成設定
管理介面上會有多個 node
心得
RabbitMQ 的 Windows Cluster 設定在官網上寫得並不是很直覺,找了不少資料也測試好幾次才成功,但好景不常架起來沒多少,測試幾次後又 整個 crash,後來重灌了好幾次才真正搞定
這樣一來不得不擔心,如果有天在 production 出問題會不會解不了 XD
參考資訊
文章作者 Yowko Tsai
上次更新 2021-10-28
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。