前言
在現在微服務架構下,RabbitMQ也需要支持集羣,保證高可用。
集羣架構
1. 普通集羣模式
1.1 主節點的隊列,從節點是沒有的。但是從節點可以看到。
1.2 消費者可以監聽從節點,從節點會找主節點要消息。
1.3 Excahge是會主從同步的。
1.4 故障無法自動轉移。
2. 鏡像集羣
2.1 通過鏡像同步,實現Exchange和Queue的同步。
2.2 主節點故障,從節點會自動切換成主節點,正常工作。
集羣搭建(普通集羣)
1. 準備三臺機器:
主節點:1.0.0.1
從節點:1.0.0.2
從節點:1.0.0.3
2. 三臺機器都需要安裝RabbitMQ:https://www.cnblogs.com/jssj/p/13910643.html
3. 保證erlang的cookie是一樣的。
cat /var/lib/rabbitmq/.erlang.cookie -- 三臺機器都需要改成一樣。
4. 啓動三臺機器的RabbitMQ。
rabbitmq-server -detached -- 後臺啓動,前端頁面將失效,只能通過linux命令查詢MQ的消息和操作。
5. 查詢RabbitMQ啓動狀態
rabbitmqctl cluster_status
6. 停止從節點
rabbitmqctl stop_app
7. 從節點執行加入集羣命令
rabbitmqctl join_cluster rabbit@mq1 -- 其中mq1主節點的主機名
8. 從節點啓動
rabbitmqctl start_app -- 這個時候前端插件有可以使用了
集羣效果圖:
集羣已經搭建完畢:
rabbitmqctl cluster_status
查看集羣狀態
集羣搭建(鏡像集羣)
策略查詢:
rabbitmqctl list_policies
策略說明:
1. 設置鏡像策略:
rabbitmqctl set_policy ha-all '^hello' '["ha-mode":"all","ha-sync-mode":"automatic"]' -- ha-all 是策略名,^hello 表示符合該表達式的隊列。
鏡像集羣就設置好了,也可以在頁面設置:
設置完成之後:
界面就隊列就變成這樣了,主節點宕機會自動切換主節點,主節點再次啓動又會自動成爲集羣的從節點。
策略刪除:
rabbitmqctl clear_policy ha-all
總結
rabbitmq集羣設置簡單,主要包含,交換機高可用和隊列高可用,掌握兩種集羣架構。