1 MQ介紹
MQ是 先進先出 的數(shù)據(jù)結(jié)構(gòu)。
優(yōu)點
- 應(yīng)用解耦
- 流量削峰
- 數(shù)據(jù)分發(fā)
缺點
- 系統(tǒng)可用性降低董朝,一旦MQ宕機鸠项,就會對業(yè)務(wù)造成影響。
- 系統(tǒng)復(fù)雜度提高子姜,以前系統(tǒng)間是同步的遠(yuǎn)程調(diào)用祟绊,現(xiàn)在是通過MQ進行異步調(diào)用。
- 一致性問題哥捕,A系統(tǒng)處理完業(yè)務(wù)牧抽,通過MQ給B、C遥赚、D三個系統(tǒng)發(fā)消息數(shù)據(jù)阎姥,如果B系統(tǒng)、C系統(tǒng)處理成功鸽捻,D系統(tǒng)處理失敗,如何保證消息數(shù)據(jù)處理的一致性
2 安裝RoctetMQ
- 由于RoctetMq使用java寫的泽腮,所以需要jdk環(huán)境御蒲,這里不在贅述。
- 下載RoctetMq安裝包诊赊,并解壓
wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip ./
unzip rocketmq-all-4.7.0-bin-release.zip
mv rocketmq-all-4.7.0-bin-release/ /usr/local/rocketmq/ #為了方便厚满,將其放入/user/local目錄下
- 啟動RocketMQ
3.1 啟動NameServer
# 1.啟動NameServer
nohup sh bin/mqnamesrv &
# 2.查看啟動日志
tail -f ~/logs/rocketmqlogs/namesrv.log
3.2 啟動Broker
# 1.啟動Broker
nohup sh bin/mqbroker -n localhost:9876 &
# 2.查看啟動日志
tail -f ~/logs/rocketmqlogs/broker.log
ps:這里發(fā)現(xiàn)啟動Broker失敗,由于我是在虛擬機中測試碧磅,只給虛擬機分配了1G內(nèi)存碘箍,而RocketMQ默認(rèn)的內(nèi)存為8G,內(nèi)存不足鲸郊,所以修改配置文件丰榴,調(diào)整JVM大小。
# 編輯runbroker.sh和runserver.sh修改默認(rèn)JVM大小
vi runbroker.sh
vi runserver.sh
根據(jù)虛擬機內(nèi)存大小參考設(shè)置:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
重新啟動NameServer秆撮,Broker
3.3 測試RocketMQ
- 設(shè)置環(huán)境變量
# 1.設(shè)置環(huán)境變量
export NAMESRV_ADDR=localhost:9876
- 發(fā)送消息
# 2.使用安裝包的Demo發(fā)送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
- 接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
3.4 關(guān)閉RocketMQ
# 1.關(guān)閉NameServer
sh bin/mqshutdown namesrv
# 2.關(guān)閉Broker
sh bin/mqshutdown broker
3 RocketMQ集群搭建
3.1 各角色介紹
- Producer:消息的發(fā)送者四濒;舉例:發(fā)信者
- Consumer:消息接收者;舉例:收信者
- Broker:暫存和傳輸消息职辨;舉例:郵局
- NameServer:管理Broker盗蟆;舉例:各個郵局的管理機構(gòu)
- Topic:區(qū)分消息的種類;一個發(fā)送者可以發(fā)送消息給一個或者多個Topic舒裤;一個消息的接收者可以訂閱一個或者多個Topic消息
- Message Queue:相當(dāng)于是Topic的分區(qū)喳资;用于并行發(fā)送和接收消息
3.2 集群搭建方式
3.2.1 集群特點
- NameServer是一個幾乎無狀態(tài)節(jié)點,可集群部署腾供,節(jié)點之間無任何信息同步仆邓,直接啟動多個即可鲜滩。
- (重點)Broker部署相對復(fù)雜,Broker分為Master與Slave宏赘,一個Master可以對應(yīng)多個Slave绒北,但是一個Slave只能對應(yīng)一個Master,Master與Slave的對應(yīng)關(guān)系通過指定相同的BrokerName察署,不同的 BrokerId 來定義闷游,BrokerId為 0 表示Master,非0 表示Slave贴汪。Master也可以部署多個脐往。每個Broker與NameServer集群中的所有節(jié)點建立長連接,定時注冊Topic信息到所有NameServer扳埂。
- Producer與 NameServer 集群中的其中一個節(jié)點 (隨機選擇业簿,因為每個節(jié)點都一樣) 建立長連接,定期從NameServer取Topic路由信息阳懂,并向提供Topic服務(wù)的 Master 建立長連接梅尤,且定時向 Master 發(fā)送心跳。Producer完全無狀態(tài)岩调,可集群部署巷燥。
- Consumer與 NameServer 集群中的其中一個節(jié)點 (隨機選擇,因為每個節(jié)點都一樣) 建立長連接号枕,定期從NameServer取Topic路由信息缰揪,并向提供Topic服務(wù)的 Master、Slave 建立長連接葱淳,且定時向 Master钝腺、Slave 發(fā)送心跳。Consumer既可以從 Master 訂閱消息赞厕,也可以從Slave訂閱消息艳狐,訂閱規(guī)則由Broker配置決定。
- RocketMQ中Topic只代表普通的消息隊列皿桑,而Queue是組成Topic的更小單元僵驰。
3.2.3 集群模式
1)單Master模式
這種方式風(fēng)險較大,一旦Broker重啟或者宕機時唁毒,會導(dǎo)致整個服務(wù)不可用蒜茴。不建議線上環(huán)境使用,可以用于本地測試浆西。
2)多Master模式
一個集群無Slave粉私,全是Master,例如2個Master或者3個Master近零。
- 優(yōu)點:配置簡單诺核,單個Master宕機或重啟維護對應(yīng)用無影響抄肖,在磁盤配置為RAID10時,即使機器宕機不可恢復(fù)情況下窖杀,由于RAID10磁盤非忱炷Γ可靠,消息也不會丟(異步刷盤丟失少量消息入客,同步刷盤一條不丟)管毙,性能最高;
- 缺點:單臺機器宕機期間桌硫,這臺機器上未被消費的消息在機器恢復(fù)之前不可訂閱夭咬,消息實時性會受到影響。
3)多Master多Slave模式(異步)
每個Master配置一個Slave铆隘,有多對Master-Slave卓舵,HA采用異步復(fù)制方式,主備有短暫消息延遲(毫秒級)膀钠。
- 優(yōu)點:即使磁盤損壞掏湾,消息丟失的非常少,且消息實時性不會受影響肿嘲,同時Master宕機后忘巧,消費者仍然可以從Slave消費,而且此過程對應(yīng)用透明睦刃,不需要人工干預(yù),性能同多Master模式幾乎一樣十酣;
- 缺點:Master宕機涩拙,磁盤損壞情況下會丟失少量消息。
4)多Master多Slave模式(同步)
每個Master配置一個Slave耸采,有多對Master-Slave兴泥,HA采用同步雙寫方式,即只有主備都寫成功虾宇,才向應(yīng)用返回成功搓彻。
- 優(yōu)點:數(shù)據(jù)與服務(wù)都無單點故障,Master宕機情況下嘱朽,消息無延遲旭贬,服務(wù)可用性與數(shù)據(jù)可用性都非常高;
- 缺點:性能比異步復(fù)制模式略低(大約低10%左右)搪泳,發(fā)送單個消息的RT會略高稀轨,且目前版本在主節(jié)點宕機后,備機不能自動切換為主機岸军。
3.3 雙主雙從集群搭建測試
3.3.1 集群工作流程
- 啟動NameServer奋刽,NameServer起來后監(jiān)聽端口瓦侮,等待Broker、Producer佣谐、Consumer連上來肚吏,相當(dāng)于一個路由控制中心。
- Broker啟動狭魂,跟所有的NameServer保持長連接罚攀,定時發(fā)送心跳包。心跳包中包含當(dāng)前Broker信息(IP+端口等)以及存儲所有Topic信息趁蕊。注冊成功后坞生,NameServer集群中就有Topic跟Broker的映射關(guān)系。
- 收發(fā)消息前掷伙,先創(chuàng)建Topic是己,創(chuàng)建Topic時需要指定該Topic要存儲在哪些Broker上,也可以在發(fā)送消息時自動創(chuàng)建Topic任柜。
- Producer發(fā)送消息卒废,啟動時先跟NameServer集群中的其中一臺建立長連接,并從NameServer中獲取當(dāng)前發(fā)送的Topic存在哪些Broker上宙地,輪詢從隊列列表中選擇一個隊列摔认,然后與隊列所在的Broker建立長連接從而向Broker發(fā)消息。
- Consumer跟Producer類似宅粥,跟其中一臺NameServer建立長連接参袱,獲取當(dāng)前訂閱Topic存在哪些Broker上,然后直接跟Broker建立連接通道秽梅,開始消費消息抹蚀。
3.3.2 服務(wù)器環(huán)境
序號 | IP | 角色 | 架構(gòu)模式 |
---|---|---|---|
1 | 192.168.85.128 | nameserver、brokerserver | Master1企垦、Slave2 |
2 | 192.168.85.129 | nameserver环壤、brokerserver | Master2、Slave1 |
3.3.3 Host添加信息
vim /etc/hosts
#配置如下:
# nameserver
192.168.85.128 rocketmq-nameserver1
192.168.85.129 rocketmq-nameserver2
# broker
192.168.85.128 rocketmq-master1
192.168.85.128 rocketmq-slave2
192.168.85.129 rocketmq-master2
192.168.85.129 rocketmq-slave1
#重啟網(wǎng)卡
systemctl restart network
3.3.4 環(huán)境變量配置
vim /etc/profile
#在profile文件的末尾加入如下命令:
#set rocketmq
ROCKETMQ_HOME=/usr/local/rocketmq
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
保存退出后輸入以下命令钞诡,使得配置立刻生效
source /etc/profile
3.3.5 創(chuàng)建消息存儲路徑
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
#master與slave共用同一個會導(dǎo)致報錯java.lang.RuntimeException: Lock failed,MQ already started
mkdir /usr/local/rocketmq/store1
mkdir /usr/local/rocketmq/store1/commitlog
mkdir /usr/local/rocketmq/store1/consumequeue
mkdir /usr/local/rocketmq/store1/index
3.3.6 broker配置文件
- master1
服務(wù)器:192.168.85.128
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties
修改配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字郑现,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址荧降,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/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 異步復(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
服務(wù)器:192.168.85.128
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties
修改配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字九默,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master震放,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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/store1
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store1/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store1/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store1/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store1/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store1/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
- master2
服務(wù)器:192.168.85.129
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties
修改配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字蹲坷,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master驶乾,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/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 異步復(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
服務(wù)器:192.168.85.129
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties
修改配置如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字杆查,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址臀蛛,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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/store1
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store1/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store1/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store1/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store1/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store1/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.3.7 服務(wù)啟動
- 啟動NameServe集群
#分別在192.168.85.128和192.168.85.129啟動NameServer
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
- 啟動Broker集群
在192.168.85.128上啟動master1和slave2
cd /usr/local/rocketmq/bin
#master1
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties &
#slave2:
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties &
在192.168.85.129上啟動master2和slave1
cd /usr/local/rocketmq/bin
#master2
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties &
#slave1
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
分別查看兩臺機子NameServe集群和Broker集群的啟動情況
3.3.8 整合成一個啟動文件
為了方便啟動备蚓,可以將啟動命令整合到一個sh文件中课蔬,方便啟動
192.168.85.128:
vim startMQ.sh
指令如下:
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties &
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties &
賦予執(zhí)行權(quán)限
chmod +x startMQ.sh
192.168.85.129:
vim startMQ.sh
指令如下:
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties &
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
賦予執(zhí)行權(quán)限
chmod +x startMQ.sh
3.4 集群監(jiān)控平臺搭建
3.4.1 概述
RocketMQ
有一個對其擴展的開源項目incubator-rocketmq-externals,這個項目中有一個子模塊叫rocketmq-console
郊尝,這個便是管理控制臺項目了二跋,先將incubator-rocketmq-externals拉到本地,因為我們需要自己對rocketmq-console
進行編譯打包運行流昏。
3.4.2 配置namesrv集群地址
打開rocketmq-console\src\main\resources\application.properties
rocketmq.config.namesrvAddr=192.168.85.128:9876;192.168.85.129:9876
3.4.3 打成jar包
mvn clean package -Dmaven.test.skip=true
3.4.4 啟動rocketmq-console
java -jar rocketmq-console-ng-1.0.1.jar
啟動成功后扎即,我們就可以通過瀏覽器訪問http://192.168.85.128:8080
進入控制臺界面了,如下圖:
排坑
啟動完畢后查看集群發(fā)現(xiàn)master機器上的地址有問題况凉,默認(rèn)使用了docker0網(wǎng)卡谚鄙。
解決:
干掉docker0
yum -y install bridge-utils
ifconfig docker0 down
brctl delbr docker0
重啟rocketmq,問題解決