原文連接:https://blog.csdn.net/weixin_40533111/article/details/84451219 做者小太陽^_^,轉載請註明出處,謝謝java
前言
本文基於最新版rocketmq 4.3.2搭建,2個節點,A節點部署A-m和B-s,B節點部署A-s和B-m
功能原理和集羣可參考:中文文檔 和roketmq學習 實戰(三) 下篇:順序消息和事務消息linux
目錄
1.準備環境
2.開始搭建git
正文
1.準備環境
1.linux服務器2臺(centos7)
2.maven(3.5以上)
3.jdk(本文使用的1.8(有人說使用系統自帶的可能致使一些問題,未測試))
4.工具:使用的xshell+xftp
部署結構圖以下:github
2.開始搭建
1.下載安裝包並上傳
從apache官網下載rocketmq二進制包安裝包並上傳到節點1(192.168.229.5),地址: http://rocketmq.apache.org/release_notes/release-notes-4.3.2/web
2.解壓
解壓並更改文件的目錄爲rocketmqspring
unzip rocketmq-all-4.3.2-bin-release.zipshell
3.修改配置文件
rocketmq默認給出了三種建議配置模式
2m-2s-async(主從異步),----本文采用這種
2m-2s-sync(主從同步)
2m-noslave(僅master)apache
修改2m-2s-async下的配置文件
修改哪一個都行,只須要啓動時指定配置文件便可,通常符合命名約束
注意:centos
autoCreateTopicEnable=true,建議線下開啓測試,線上關閉
同一個機器上啓動多個broker時,需使用不一樣的broker配置文件來啓動實例,
eg節點1啓動一個a-m和b-s,使用broker-a.properties和broker-b-s.properties
listenPort默認爲10911,當一個機器上啓動多個broker示例時,需區分開端口
broker啓動時,默認內存設置比較大,改爲適合機器的,細節可看步驟6
當一個節點啓動多個broker實例時,存儲路徑若是顯示的設置,則須要指定不一樣的storePath路徑,(不設置的話,默認不一樣)springboot
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 &
頁面驗證
至此搭建完畢