RocketMQ DLedger 多副本即主從切換配置

0、快速配置

背景補充

我是基於現有測試環境下3主3從的異步複製的集羣下進行配置的。

沒有過多考慮配置變更後rocketmq消息數據的一致性問題。建議在安裝部署時就按改方案進行。

配置過程

爲了完成這次配置看了好多資料,但是並沒有任何一篇技術文檔提供“傻瓜式配置”和注意事項,所以爲了弄清楚一些概念和驗證一些配置的必要性上花了較長的時間,最後回過頭來看就是那麼幾個步驟:

1、 關閉需要配置的broker的所有實例。

2、使用md5sum校驗同一個broker name下的所有commitlog 的一致性,如果不一致就採用最新版本進行各節點同步(copy paste 到各節點)。

3、在broker 配置文件(每一個broker對應一個配置文件,每一個都要修改,原有的主從/集羣配置可以完全不變)下加入如下內容(注意參數名字和值前後不要有空格,否則系統不認,我就是在這一細節上繞了好久):

#開啓主從切換的關鍵參數

enableDLegerCommitLog=true

#官方建議使用與broker name一樣的名字。

dLegerGroup=broker-a

#以下參數端口號不限,只要不被佔用就可以了

dLegerPeers=n0-192.168.0.1:40911;n1-192.168.0.2:40912;n2-192.168.0.3:40913

#這個要求是唯一id,根據節點分配,要與dLegerPeers保持一致。

dLegerSelfId=n0

4、啓動實例

5、查看集羣狀態,這是你會發現這個broker下的主節點不再是按你配置文件所設定順序和角色來的。即是:你原來的設定10.87.132.66 的brokerid=0 brokerrole=ASNC_MASTER,但是配置了DLedger後,就是按選舉結果來決定的。

6、測試:

  • 關閉brokerid=0的實例
  • 查看集羣狀態,立刻從現有實例選舉一個新的主實例出來。並且發送這個broker上特有消息,成功發送。
  • 驗證,配置成功

知識點補充

 DLedger 這個組件已經集成在rocketmq 4.5..2 上,不需要額外安裝。

在$ROCKETMQ_HOME/bin下有一個dledger 目錄,裏面有一個腳本就是官方的示例。

執行腳本,./fast-try.sh start 就會在本機上創建一個nameserver, 1主兩從的broker +dledger 機制下的主從切換。

配置文件存放在: $ROCKETMQ_HOME/dledger ,配置文件很簡單,具體如下:

brokerClusterName = RaftCluster

brokerName=RaftNode00

listenPort=30911

namesrvAddr=127.0.0.1:9876

storePathRootDir=/tmp/rmqstore/node00

storePathCommitLog=/tmp/rmqstore/node00/commitlog

enableDLegerCommitLog=true

dLegerGroup=RaftNode00

dLegerPeers=n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913

## must be unique

dLegerSelfId=n0

sendMessageThreadPoolNums=16

從上面內容看出來,rocketmq的配置是很簡單的,不需要考慮太多的依賴關係,我做了一個驗證:

把原有的集羣名字、端口號改變後在再啓動是沒有問題的。

所以我感覺rocketmq 的設計應該更傾向於無狀態設計。

 

 

參考文章:

 https://github.com/apache/rocketmq/blob/rocketmq-all-4.7.0/docs/cn/dledger/deploy_guide.md

https://www.geek-share.com/detail/2788006760.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章