在上一篇《RocketMQ:快速入門》之后,今天說一說如何搭建RocketMQ集群。首先看一下集群架構(gòu)圖:
1. 集群特點(diǎn)
- NameServer是一個(gè)幾乎無狀態(tài)節(jié)點(diǎn),可集群部署,節(jié)點(diǎn)之間無任何信息同步。
- Broker部署相對(duì)復(fù)雜,Broker分為Master與Slave,一個(gè)Master可以對(duì)應(yīng)多個(gè)Slave,但是一個(gè)Slave只能對(duì)應(yīng)一個(gè)Master,Master與Slave的對(duì)應(yīng)關(guān)系通過指定相同的BrokerName。不同的BrokerId來定義,BrokerId為0表示Master,非0表示Slave。Master也可以部署多個(gè)。每個(gè)Broker與NameServer集群中的所有節(jié)點(diǎn)建立長(zhǎng)連接,定時(shí)注冊(cè)Topic信息到所有NameServer。
- Producer與NameServer集群中的其中一個(gè)節(jié)點(diǎn)(隨機(jī)選擇)建立長(zhǎng)連接,定期從NameServer取Topic路由信息,并向提供Topic服務(wù)的Master建立長(zhǎng)連接,且定時(shí)向Master發(fā)送心跳。Producer完全無狀態(tài),可集群部署。
- Consumer與NameServer集群中的其中一個(gè)節(jié)點(diǎn)(隨機(jī)選擇)建立長(zhǎng)連接,定期從NameServer取Topic路由信息,并向提供Topic服務(wù)的Master、Slave建立長(zhǎng)連接,且定時(shí)向Master、Slave發(fā)送心跳。Consumer既可以從Master訂閱消息,也可以從Slave訂閱消息,訂閱規(guī)則由Broker配置決定。
2. 集群模式
2.1 單Master模式
這種方式風(fēng)險(xiǎn)較大,一旦Broker重啟或者宕機(jī)時(shí),會(huì)導(dǎo)致整個(gè)服務(wù)不可用。不建議線上環(huán)境使用,通常可以用于本地測(cè)試。我們?cè)?a href="http://www.lxweimin.com/p/2f4b46dc99db" target="_blank">《RocketMQ:快速入門》搭建的就是單Master模式。
2.2 多Master模式
一個(gè)集群無Slave,全是Master,例如2個(gè)Master或者3個(gè)Master,這種模式的優(yōu)缺點(diǎn)如下:
- 優(yōu)點(diǎn):配置簡(jiǎn)單,單個(gè)Master宕機(jī)或重啟維護(hù)對(duì)應(yīng)用無影響,在磁盤配置為RAID10時(shí),即使機(jī)器宕機(jī)不可恢復(fù)情況下,由于RAID10磁盤非常可靠,消息也不會(huì)丟(異步刷盤丟失少量消息,同步刷盤一條不丟),性能最高。
- 缺點(diǎn):?jiǎn)闻_(tái)機(jī)器宕機(jī)期間,這臺(tái)機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱,消息實(shí)時(shí)性會(huì)受到影響。
2.3 多Master多Slave模式(異步)
每個(gè)Master配置一個(gè)Slave,有多對(duì)Master-Slave,HA采用異步復(fù)制方式,主備有短暫消息延遲(毫秒級(jí)),這種模式的優(yōu)缺點(diǎn)如下:
- 優(yōu)點(diǎn):即使磁盤損壞,消息丟失的非常少,且消息實(shí)時(shí)性不會(huì)受影響,同時(shí)Master宕機(jī)后,消費(fèi)者仍然可以從Slave消費(fèi),而且此過程對(duì)應(yīng)用透明,不需要人工干預(yù),性能同多Master模式幾乎一樣。
- 缺點(diǎn):Master宕機(jī),磁盤損壞情況下會(huì)丟失少量消息。
2.4 多Master多Slave模式(同步)
每個(gè)Master配置一個(gè)Slave,有多對(duì)Master-Slave,HA采用同步雙寫方式,即只有主備都寫成功,才向應(yīng)用返回成功,這種模式的優(yōu)缺點(diǎn)如下:
- 優(yōu)點(diǎn):數(shù)據(jù)與服務(wù)都無單點(diǎn)故障,Master宕機(jī)情況下,消息無延遲,服務(wù)可用性與數(shù)據(jù)可用性都非常高。
- 缺點(diǎn):性能比異步復(fù)制模式略低(大約低10%左右),發(fā)送單個(gè)消息的RT會(huì)略高,且目前版本在主節(jié)點(diǎn)宕機(jī)后,備機(jī)不能自動(dòng)切換為主機(jī)。
3. 雙主雙從同步雙寫集群搭建
3.1 總體架構(gòu)
3.2 集群工作流程
- 啟動(dòng)NameServer,NameServer起來后監(jiān)聽端口,等待Broker、Producer、Consumer連上來,相當(dāng)于一個(gè)路由控制中心。
- Broker啟動(dòng),跟所有的NameServer保持長(zhǎng)連接,定時(shí)發(fā)送心跳包。心跳包中包含當(dāng)前Broker信息(IP+端口等)以及存儲(chǔ)所有Topic信息。注冊(cè)成功后,NameServer集群中就有Topic跟Broker的映射關(guān)系。
- 收發(fā)消息前,先創(chuàng)建Topic,創(chuàng)建Topic時(shí)需要指定該Topic要存儲(chǔ)在哪些Broker上,也可以在發(fā)送消息時(shí)自動(dòng)創(chuàng)建Topic。
- Producer發(fā)送消息,啟動(dòng)時(shí)先跟NameServer集群中的其中一臺(tái)建立長(zhǎng)連接,并從NameServer中獲取當(dāng)前發(fā)送的Topic存在哪些Broker上,輪詢從隊(duì)列列表中選擇一個(gè)隊(duì)列,然后與隊(duì)列所在的Broker建立長(zhǎng)連接從而向Broker發(fā)消息。
- Consumer跟Producer類似,跟其中一臺(tái)NameServer建立長(zhǎng)連接,獲取當(dāng)前訂閱Topic存在哪些Broker上,然后直接跟Broker建立連接通道,開始消費(fèi)消息。
3.3 服務(wù)器環(huán)境
主機(jī)名 | 主機(jī)ip | 角色(端口) |
---|---|---|
node1 | 192.168.1.19 | rocketmq-ns1(9876) rocketmq-bs-m1(10911) |
node2 | 192.168.1.20 | rocketmq-ns2(9876) rocketmq-bs-m2(10911) rocketmq-bs-s1(11011) |
node3 | 192.168.1.21 | rocketmq-ns3(9876) rocketmq-bs-s2(10911) rockermq-console(8080) |
3.4 修改host配置
使用vim命令編輯/etc/hosts
文件,添加以下配置:
##################### begin rocketmq #####################
# nameserver
192.168.1.19 rocketmq-ns1
192.168.1.20 rocketmq-ns2
192.168.1.21 rocketmq-ns3
# broker
192.168.1.19 rocketmq-bs-m1
192.168.1.20 rocketmq-bs-m2 rocketmq-bs-s1
192.168.1.21 rocketmq-bs-s2
##################### end rocketmq #####################
配置完成后,重啟網(wǎng)卡:
systemctl restart network
3.5 防火墻配置
宿主機(jī)需要遠(yuǎn)程訪問虛擬機(jī)的rocketmq服務(wù)和web服務(wù),需要開放相關(guān)的端口號(hào),簡(jiǎn)單粗暴的方式是直接關(guān)閉防火墻。
# 關(guān)閉防火墻
systemctl stop firewalld.service
# 查看防火墻的狀態(tài)
firewall-cmd --state
# 禁止firewall開機(jī)啟動(dòng)
systemctl disable firewalld.service
或者為了安全,只開放特定的端口號(hào),RocketMQ默認(rèn)使用3個(gè)端口:9876 、10911 、11011 。如果防火墻沒有關(guān)閉的話,那么防火墻就必須開放這些端口:
-
nameserver
默認(rèn)使用 9876 端口 -
master
默認(rèn)使用 10911 端口 -
slave
默認(rèn)使用11011 端口
執(zhí)行以下命令:
# 開放name server默認(rèn)端口
firewall-cmd --remove-port=9876/tcp --permanent
# 開放master默認(rèn)端口
firewall-cmd --remove-port=10911/tcp --permanent
# 開放slave默認(rèn)端口 (當(dāng)前集群模式可不開啟)
firewall-cmd --remove-port=11011/tcp --permanent
# 重啟防火墻
firewall-cmd --reload
3.6 配置環(huán)境變量
使用vim命令編輯/etc/profile
文件,添加以下配置:
# rocketmq env
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.4.0-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin
配置完成后,生效配置:
source /etc/profile
3.7 創(chuàng)建消息存儲(chǔ)路徑
# node1
mkdir /usr/local/rocketmq/store/master1
mkdir /usr/local/rocketmq/store/master1/commitlog
mkdir /usr/local/rocketmq/store/master1/consumequeue
mkdir /usr/local/rocketmq/store/master1/index
# node2
mkdir /usr/local/rocketmq/store/master2
mkdir /usr/local/rocketmq/store/master2/commitlog
mkdir /usr/local/rocketmq/store/master2/consumequeue
mkdir /usr/local/rocketmq/store/master2/index
mkdir /usr/local/rocketmq/store/master1-slave1
mkdir /usr/local/rocketmq/store/master1-slave1/commitlog
mkdir /usr/local/rocketmq/store/master1-slave1/consumequeue
mkdir /usr/local/rocketmq/store/master1-slave1/index
# node3
mkdir /usr/local/rocketmq/store/master2-slave1
mkdir /usr/local/rocketmq/store/master2-slave1/commitlog
mkdir /usr/local/rocketmq/store/master2-slave1/consumequeue
mkdir /usr/local/rocketmq/store/master2-slave1/index
3.8 Broker配置文件
3.8.1 master1的配置
服務(wù)器:node1(192.168.1.19)
vim /usr/local/rocketmq/conf/2m-2s-sync/master1.properties
配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,多個(gè)之間用分號(hào)分割
namesrvAddr=rocketmq-ns1:9876;rocketmq-ns2:9876;rocketmq-ns3:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store/master1
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/master1/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/master1/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/master1/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/master1/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/master1/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ā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
3.8.2 master1-slave1的配置
服務(wù)器:node2(192.168.1.20)
vim /usr/local/rocketmq/conf/2m-2s-sync/master1-slave1.properties
配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-ns1:9876;rocketmq-ns2:9876;rocketmq-ns3:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store/master1-slave1
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/master1-slave1/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/master1-slave1/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/master1-slave1/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/master1-slave1/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/master1-slave1/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ā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
3.8.3 master2的配置
服務(wù)器:node2(192.168.1.20)
vim /usr/local/rocketmq/conf/2m-2s-sync/master2.properties
配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-ns1:9876;rocketmq-ns2:9876;rocketmq-ns3:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑(注意,如果在一臺(tái)機(jī)器上啟動(dòng)多個(gè)broker,這個(gè)路徑要區(qū)分開)
storePathRootDir=/usr/local/rocketmq/store/master2
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/master2/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/master2/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/master2/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/master2/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/master2/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ā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
3.8.4 master2-slave1的配置
服務(wù)器:node3(192.168.1.21)
vim /usr/local/rocketmq/conf/2m-2s-sync/master2-slave1.properties
配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-ns1:9876;rocketmq-ns2:9876;rocketmq-ns3:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store/master2-slave1
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/master2-slave1/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/master2-slave1/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/master2-slave1/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/master2-slave1/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/master2-slave1/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ā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
3.9 修改啟動(dòng)腳本
根據(jù)實(shí)際情況,修改/bin/runbroker.sh
和/bin/runserver.sh
腳本的JVM參數(shù),參考配置如下:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
3.10 啟動(dòng)服務(wù)
3.10.1 啟動(dòng)NameServer集群
分別在三臺(tái)機(jī)器上啟動(dòng)NameServer服務(wù):
nohup sh bin/mqnamesrv &
3.10.2 啟動(dòng)Broker集群
- 在
node1
上啟動(dòng)master1:
nohup sh bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/master1.properties &
- 在
node2
上啟動(dòng)master1-slave1和master2
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/master1-slave1.properties &
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/master2.properties &
- 在
node3
上啟動(dòng)master2-slave1
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/master2-slave1.properties &
3.11 查看進(jìn)程狀態(tài)
啟動(dòng)后通過jps
命令查看進(jìn)程狀態(tài),至此一個(gè)雙主雙從,同步雙寫的集群搭建完成。
4. 集群監(jiān)控平臺(tái)搭建
4.1 概述
RocketMQ
有一個(gè)對(duì)其擴(kuò)展的開源項(xiàng)目rocketmq-externals
,這個(gè)項(xiàng)目中有一個(gè)子模塊叫rocketmq-console
,這個(gè)便是管理控制臺(tái)項(xiàng)目了,先將rocketmq-externals
拉到本地,因?yàn)槲覀冃枰约簩?duì)rocketmq-console
進(jìn)行編譯打包運(yùn)行。
4.2 下載并編譯打包
下載地址:https://github.com/apache/rocketmq-externals
注意:打包前在rocketmq-console
中配置namesrv
集群地址:
rocketmq.config.namesrvAddr=rocketmq-ns1:9876;rocketmq-ns2:9876;rocketmq-ns3:9876
編譯打包:
git clone https://github.com/apache/rocketmq-externals
cd rocketmq-console
mvn clean package -Dmaven.test.skip=true
在node3
這臺(tái)服務(wù)器上啟動(dòng)rocketmq-console
:
java -jar rocketmq-console-ng-1.0.1.jar
啟動(dòng)成功后,我們就可以通過瀏覽器訪問http://192.168.1.21:8080
進(jìn)入控制臺(tái)界面了,如下圖: