先了解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ì)受到影響。
- 下載二進(jìn)制安裝包
[root@localhost servers]#wget https://downloads.apache.org/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip - 創(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
- 啟動(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)成功
- 部署另一臺(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 &
- 啟動(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í)踐
