RocketMq集群搭建(雙主雙從同步雙寫)并安裝可視化平臺RocketMq-Dashboard

一、環(huán)境準(zhǔn)備

linux環(huán)境、64位 JDK 1.8+、RocketMQ環(huán)境包
官網(wǎng):https://rocketmq.apache.org/zh/

二、服務(wù)器環(huán)境及規(guī)劃

ip                                                角色                                 架構(gòu)模式
10.0.0.22           nameserver1:9876、broker-master1:10911、broker-slave2:11011      Master1、Slave2
10.0.0.23           nameserver2:9876、broker-master2:10911、broker-slave1:11011      Master2、Slave1

2.1 開放端口

每個服務(wù)器需開放七個端口
9876 #namesrv
10911、10909、10912 #broker主節(jié)點
11011、11009、11012 #broker從節(jié)點
端口規(guī)則說明:
namesrv默認(rèn)端口:9876
假設(shè)broker配置的 ListenPort 端口:10911
則vip 通道端口為:ListenPort - 2 = 10909
則HA 通道端口為: ListenPort + 1 = 10912

三、開始部署

3.1 做hosts解析(全部機(jī)器)

vim /etc/hosts
10.0.0.22   rocketmq-1
10.0.0.23   rocketmq-2

3.2 下載包(這里選擇的4.9.3版本)

wget https://archive.apache.org/dist/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip

3.3 解壓軟件包并配置環(huán)境變量(全部機(jī)器)

unzip rocketmq-all-4.9.3-bin-release.zip  -d /usr/local/rocketmq/

vim /etc/profile
ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-4.9.3
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH

source  /etc/profile

3.4 修改配置

進(jìn)入/usr/local/rocketmq/rocketmq-4.9.3/conf目錄查看

2m-2s-async  目錄為雙master雙slave異步復(fù)制配置目錄
2m-2s-sync    目錄為雙master雙slave同步雙寫配置目錄
2m-noslave    目錄為多master配置目錄

這里我們只需要配置2m-2s-sync這個目錄即可

10.0.0.22 服務(wù)器:broker配置

master1

vim /usr/local/rocketmq/rocketmq-4.9.3/conf/2m-2s-sync/broker-a.properties

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

slave2

vim /usr/local/rocketmq/rocketmq-4.9.3/conf/2m-2s-sync/broker-b-s.properties

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

10.0.0.23 服務(wù)器:broker配置

master2

vim /usr/local/rocketmq/rocketmq-4.9.3/conf/2m-2s-sync/broker-b.properties

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

slave1

vim /usr/local/rocketmq/rocketmq-4.9.3/conf/2m-2s-sync/broker-a-s.properties

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

3.5 修改啟動腳本(所有服務(wù)器)

原因:我啟動的虛擬機(jī)的內(nèi)存設(shè)置的是4G,而mq默認(rèn)的JVM最小的堆內(nèi)容是8G,太大了,不修改將無法啟動。

vim /usr/local/rocketmq/rocketmq-4.9.3/bin/runserver.sh
修改如下:

 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

vim /usr/local/rocketmq/rocketmq-4.9.3/bin/runbroker.sh
修改如下:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"

3.6 啟動服務(wù)

創(chuàng)建日志目錄

mkdir /usr/local/rocketmq/rocketmq-4.9.3/logs

啟動nameserver (全部機(jī)器)

cd  /usr/local/rocketmq/rocketmq-4.9.3/bin/ 
nohup  sh mqnamesrv  > /usr/local/rocketmq/rocketmq-4.9.3/logs/mqnamesrv.log  2>&1 &

tail -f /usr/local/rocketmq/rocketmq-4.9.3/logs/mqnamesrv.log
下面表示啟動成功


image.png

啟動broker

10.0.0.22機(jī)器

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a.log &
tail  -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a.log

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b-s.log &
tail  -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b-s.log

10.0.0.23機(jī)器

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b.log &
tail  -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b.log

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a-s.log &
tail -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a-s.log

啟動完成,通過jps查看java進(jìn)程

[root@rocketmq-1 rocketmq-4.9.3]# jps
23635 BrokerStartup
23733 BrokerStartup
23038 NamesrvStartup
23823 Jps

關(guān)閉命令

停止服務(wù)的時候需要注意,要先停止broker,其次停止nameserver。

關(guān)閉broker服務(wù) :  sh /usr/local/rocketmq/rocketmq-4.9.3/bin/mqshutdown broker
關(guān)閉namesrv服務(wù):  sh /usr/local/rocketmq/rocketmq-4.9.3/bin/mqshutdown namesrv

四、安裝可視化平臺RocketMq-Dashboard

參考官方文檔:https://rocketmq.apache.org/zh/docs/4.x/deployment/03Dashboard

4.1 安裝docker,拉取 rocketmq-dashboard 鏡像

docker pull apacherocketmq/rocketmq-dashboard:latest

4.2 docker 容器中運行rocketmq-dashboard

docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.0.0.22:9876;10.0.0.23:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
namesrv.addr:port 替換為 rocketmq 中配置的 nameserver 地址:端口號

默認(rèn)端口配置下,需開放端口號:控制臺:8080;namesrv:9876;broker:10909、10911
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容