RocketMq 集群搭建 部署


原文鏈接:https://blog.csdn.net/weixin_40533111/article/details/84451219 作者小太陽^_^,轉載請注明出處,謝謝

前言
本文基於最新版rocketmq 4.3.2搭建,2個節點,A節點部署A-m和B-s,B節點部署A-s和B-m
功能原理和集群可參考:中文文檔 和roketmq學習 實戰(三) 下篇:順序消息和事務消息

目錄
1.准備環境
2.開始搭建

正文
1.准備環境
1.linux服務器2台(centos7)
2.maven(3.5以上)
3.jdk(本文使用的1.8(有人說使用系統自帶的可能導致一些問題,未測試))
4.工具:使用的xshell+xftp
部署結構圖如下:

 


2.開始搭建
1.下載安裝包並上傳
從apache官網下載rocketmq二進制包安裝包並上傳到節點1(192.168.229.5),地址: http://rocketmq.apache.org/release_notes/release-notes-4.3.2/

 


2.解壓
解壓並更改文件的目錄為rocketmq

unzip rocketmq-all-4.3.2-bin-release.zip

 


3.修改配置文件
rocketmq默認給出了三種建議配置模式
2m-2s-async(主從異步),----本文采用這種
2m-2s-sync(主從同步)
2m-noslave(僅master)

 

修改2m-2s-async下的配置文件
修改哪個都行,只需要啟動時指定配置文件即可,一般符合命名約束
注意:

autoCreateTopicEnable=true,建議線下開啟測試,線上關閉
同一個機器上啟動多個broker時,需使用不同的broker配置文件來啟動實例,
eg節點1啟動一個a-m和b-s,使用broker-a.properties和broker-b-s.properties
listenPort默認為10911,當一個機器上啟動多個broker示例時,需區分開端口
broker啟動時,默認內存設置比較大,改成適合機器的,細節可看步驟6
當一個節點啟動多個broker實例時,存儲路徑如果顯示的設置,則需要指定不同的storePath路徑,(不設置的話,默認不同)

 

3.1修改broker-a.properties主要內容為如下:


#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重復,為了管理,每個master起一個名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=192.168.229.5:9876;192.168.229.6:9876
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口,
listenPort=10911
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/rocketmq/store/broker-a
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/broker-a/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store/broker-a/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/broker-a/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

3.2修改broker-b-s.properties主要內容為如下:


#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重復,為了管理,每個master起一個名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=192.168.229.5:9876;192.168.229.6:9876
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口,
listenPort=10920
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/rocketmq/store/broker-b-s
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/broker-b-s/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store/broker-b-s/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/broker-b-s/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

4.配置第二台機器(192.168.229.6)
本文使用的克隆虛擬機,可快速獲取一個與原機器一樣的機器,因為完全一樣,需要更改下mac地址,如果使用靜態ip,改下網關的配置即可,手動重新搭建一台當然也可以
配置同上步,更改ip和broker具體信息即可
5.啟動nameServer
上述配置文件中指定了commitLog,隊列,日志等的存儲路徑,創建該文件夾
節點1執行:
mkdir -p /usr/local/rocketmq/store/broker-a /usr/local/rocketmq/store/broker-a/nsumequeue /usr/local/rocketmq/store/broker-a/commitlog /usr/local/rocketmq/store/broker-a/index /usr/local/rocketmq/logs /usr/local/rocketmq/store/broker-b-s /usr/local/rocketmq/store/broker-b-s/nsumequeue /usr/local/rocketmq/store/broker-b-s/commitlog /usr/local/rocketmq/store/broker-b-s/index
節點2執行:
mkdir -p /usr/local/rocketmq/store/broker-a-s /usr/local/rocketmq/store/broker-a-s/nsumequeue /usr/local/rocketmq/store/broker-a-s/commitlog /usr/local/rocketmq/store/broker-a-s/index /usr/local/rocketmq/logs /usr/local/rocketmq/store/broker-b /usr/local/rocketmq/store/broker-b/nsumequeue /usr/local/rocketmq/store/broker-b/commitlog /usr/local/rocketmq/store/broker-b/index

2.啟動節點1的nameServer(192.168.229.5)

nohup sh /usr/local/rocketmq/bin/mqnamesrv >/usr/local/rocketmq/logs/mqnamesrv.log 2>&1 &
1
將日志文件輸出到指定文件,再進行日志查看,jps 等進行java進程查看,結果符合預期

 

3. 啟動節點2的nameServer(192.168.229.5)
步驟如節點1,啟動成功


6.啟動broker
啟動節點1的broker-a的master,對應的配置文件broker-a.properties
啟動多個實例時,指定對應的配置文件
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties > /usr/local/rocketmq/logs/broker-a.log 2>&1 &

默認配置的內存較大,因為部署的是虛擬機,改小些

vi /usr/local/rocketmq/bin/runbroker.sh

 

再次啟動broker-a

 


啟動節點2的broker-a-s
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties > /usr/local/rocketmq/logs/broker-a-s.log 2>&1 &

啟動節點2的broker-b
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties > /usr/local/rocketmq/logs/broker-b.log 2>&1 &

 


啟動節點1的broker-b-s
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties > /usr/local/rocketmq/logs/broker-b-s.log 2>&1 &

 


查看集群的啟動狀況:四個節點,符合預期,至此,集群初版搭建完畢

 

7.啟動web管理界面
rocketmq提供多種管理方式,命令行和界面等,
apache提供一個開源的擴展項目: https://github.com/apache/rocketmq-externals 里面包含一個子項目rocketmq-console,配置下,打個包就可以用了

 


這是一個springboot項目,默認名稱服務(rocketmq.config.namesrvAddr)為空,需改為自己的

 

2.使用maven打包
mvn clean package -Dmaven.test.skip=true

 


上傳到服務器啟動即可java -jar啟動
java -jar rocketmq-console-ng-1.0.0.jar >/usr/local/rocketmq/logs/mq-console.log 2>&1 &
頁面驗證

 

至此搭建完畢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM