2020-10-15 搭建RocketMQ集群

先了解RocketMq的集群架構(gòu)


image.png

多Master模式

集群模式介紹

一個(gè)集群無(wú)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)用無(wú)影響,在磁盤配置為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ì)受到影響。

  1. 下載二進(jìn)制安裝包
    [root@localhost servers]# wget https://downloads.apache.org/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
  2. 創(chuàng)建數(shù)據(jù)目錄
[root@localhost 2m-noslave]# mkdir data
[root@localhost 2m-noslave]# vim conf/2m-noslave/broker-a.properties 
brokerClusterName=YuchangCluster #改下集群名字
brokerName=broker-113 #改下brokerName
#brokerId 0 表示 Master,>0 表示 Slave
brokerId=0
# 刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=48
#Broker role有3種:SYNC MASTER、ASYNC MASTER、SLAVE。關(guān)鍵詞SYNC和ASYNC表示Master和Slave之間同步消息的機(jī)制,SYNC即同步更新,指當(dāng)Slave和Master消息同步完成后,再返回發(fā)送成功的狀態(tài)。ASYNC即異步更新,master與slave有短暫消息延遲,毫秒級(jí)。本文在此使用了異步復(fù)制集群模式
brokerRole=ASYNC_MASTER
# 刷盤方式 ASYNC_FLUSH 異步刷盤
flushDiskType=ASYNC_FLUSH
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver-1:9876;rocketmq-nameserver-2:9876
#存儲(chǔ)路徑
storePathRootDir=/servers/rocketmq-all-4.7.1-bin-release/data
storePathCommitLog=/servers/rocketmq-all-4.7.1-bin-release/data/commitlog
brokerIP1=10.1.1.113
  1. 啟動(dòng)nameserver(依賴jdk,提前安裝jdk環(huán)境)
    [root@localhost rocketmq-all-4.7.1-bin-release]# nohup bin/mqnamesrv -n 10.1.1.113:9876 > nameserver.log 2>&1 &
    查看nameserver日志
    [root@localhost rocketmq-all-4.7.1-bin-release]# tail -f nameserver.log
nohup: 忽略輸入
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON

nameserver啟動(dòng)成功

  1. 部署另一臺(tái)
    [root@localhost servers]# scp -r rocketmq-all-4.7.1-bin-release root@10.1.1.114:/servers/整體拷貝到114上,修改conf/broker-b.properties
    brokerName=broker-114同種方式,再啟動(dòng)nameserver
brokerClusterName=YuchangCluster
brokerName=broker-114
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=10.1.1.113:9876;10.1.1.114:9876
storePathRootDir=/servers/rocketmq-all-4.7.1-bin-release/data
storePathCommitLog=/servers/rocketmq-all-4.7.1-bin-release/data/commitlog
brokerIP1=10.1.1.114

114上啟動(dòng)nameserver
nohup bin/mqnamesrv -n 10.1.1.114:9876 > nameserver.log 2>&1 &

  1. 啟動(dòng)broker
113 [root@localhost rocketmq-all-4.7.1-bin-release]# nohup bin/mqbroker -n 10.1.1.113:9876 -c conf/2m-noslave/broker-a.properties autoCreateTopicEnable=true > broker.log 2>&1 &
114 [root@localhost rocketmq-all-4.7.1-bin-release]# nohup bin/mqbroker -n 10.1.1.114:9876 -c conf/2m-noslave/broker-b.properties autoCreateTopicEnable=true > broker.log 2>&1 &

安裝控制臺(tái)

$ git clone https://github.com/apache/rocketmq-externals
cd rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
nohup java -jar target/rocketmq-console-ng-2.0.0.jar --server.port=8080 --rocketmq.config.namesrvAddr='10.1.1.113:9876;10.1.1.114:9876' &

操作指南
從自己的電腦訪問10.1.1.113:8080

常用命令
停止broker #bin/mqshutdown broker /namesrv
官方最佳實(shí)踐

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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