1. 程式人生 > 其它 >第十四章 高階特性-Rabbitmq高可用叢集實戰講解(3)

第十四章 高階特性-Rabbitmq高可用叢集實戰講解(3)

第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管控臺訪問不了
    • 啟動消費者監聽,可以消費到訊息