第十四章 高階特性-Rabbitmq高可用叢集實戰講解(3)
阿新 • • 發佈:2021-12-08
第5集 綜合實戰-RabbitMQ高可用mirror映象叢集策略配置
簡介:講解RabbitMQ高可用mirror映象叢集配置策略配置
-
背景
- 前面搭建了普通叢集,如果磁碟節點掛掉後,如果沒開啟持久化資料就丟失了,其他節點也無法獲取訊息,所以我們這個叢集方案需要進一步改造為映象模式叢集。
-
策略policy介紹
rabbitmq的策略policy是用來控制和修改叢集的vhost佇列和Exchange複製行為
就是要設定哪些Exchange或者queue的資料需要複製、同步,以及如何複製同步
-
建立一個策略來匹配佇列
-
路徑:rabbitmq管理頁面 —> Admin —> Policies —> Add / update a policy
-
引數: 策略會同步同一個VirtualHost中的交換器和佇列資料
- name:自定義策略名稱
- Pattern:^ 匹配符,代表匹配所有
- Definition:ha-mode=all 為匹配型別,分為3種模式:all(表示所有的queue)
ha-mode: 指明映象佇列的模式,可選下面的其中一個
all:表示在叢集中所有的節點上進行映象同步(一般都用這個引數)
exactly:表示在指定個數的節點上進行映象同步,節點的個數由ha-params指定
nodes:表示在指定的節點上進行映象同步,節點名稱通過ha-params指定
ha-sync-mode:映象訊息同步方式 automatic(自動),manually(手動)
-
- 配置好後,+2的意思是有三個節點,一個節點本身和兩個映象節點, 且可以看到策略名稱 xdclass_mirror
-
叢集重啟順序
- 叢集重啟的順序是固定的,並且是相反的
- 啟動順序:磁碟節點 => 記憶體節點
- 關閉順序:記憶體節點 => 磁碟節點
- 最後關閉必須是磁碟節點,否則容易造成叢集啟動失敗、資料丟失等異常情況
第6集 SpringBoot2.x專案整合RabbitMQ高可用mirror映象叢集
簡介:使用SpringBoot專案整合RabbitMQ高可用叢集
- SpringBoot AMQP單機配置
spring:
rabbitmq:
host: 10.211.55.13
port: 5672
virtual-host: /
password: guest
username: guest
# 投遞到交換機
publisher-confirm-type: correlated
# 交換機到佇列
publisher-returns: true
##指定訊息在沒有被佇列接收時是否強行退回還是直接丟棄,true是退回
template:
mandatory: true
#開啟手動確認訊息,如果訊息重新入對則會一直重試,可以配置重試次數
listener:
simple:
acknowledge-mode: manual
- 高可用映象叢集配置
#訊息佇列
spring:
rabbitmq:
addresses: 10.211.55.13:5672,10.211.55.13:5673,10.211.55.13:5674
virtual-host: /dev
password: xdclass.net168
username: admin
#開啟訊息二次確認,生產者到broker的交換機
publisher-confirm-type: correlated
#開啟訊息二次確認,交換機到佇列的可靠性投遞
publisher-returns: true
#為true,則交換機處理訊息到路由失敗,則會返回給生產者
template:
mandatory: true
#訊息手工確認ACK
listener:
simple:
acknowledge-mode: manual
-
高可用叢集測試
- 關閉消費者監聽
- 生產者傳送一個訊息
- 停止節點一和節點二,web管控臺訪問不了
- 啟動消費者監聽,可以消費到訊息