RocketMQ環境搭建(雙master模式)


介紹:

  多Master模式,一個集群無Slave,全是Master,例如2個Master或者3個Master。

  優點:配置簡單,單個Master宕機或重啟維護對應用無影響,在磁盤配置為RAID10時,即使機器宕機不可恢復情況下,由於RAID10磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟)。性能最高。

  缺點:單台機器宕機期間,這台機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會收到影響

1. 服務器環境:

服務器A      
192.168.192.130
服務器B
192.168.192.131

2.編輯服務器A和服務器B的hosts文件,添加同樣的內容

vim /etc/hosts

192.168.192.130 rocketmq-nameserver1
192.168.192.130 rocketmq-master1
192.168.192.131 rocketmq-nameserver2
192.168.192.131 rocketmq-master2

3.重啟一下兩台機器的網卡並且兩台服務器相互ping一下,看是否通

重啟網卡
$ service network restart

#130上ping 131 ping rocketmq-nameserver2 ping rocketmq-master2

#131上ping 130

ping rocketmq-nameserver1
ping rocketmq-master2

4. 上傳alibaba-rocketmq-3.2.6.tar.gz 到兩台服務器上面的/usr/local下解壓,改名(兩個服務器操作相同)

tar -vxzf alibaba-rocketmq-3.2.6.tar.gz mv alibaba-rocketmq-3.2.6 rocketmq

5.在兩台服務器上面創建存儲路徑(兩個服務器操作相同)

mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index

6.編輯兩台服務器上面rocketmq的配置文件(兩個服務器操作相同)

6.1 修改broker-a.properties文件

vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

#所屬集群名字
borkerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示Master, >0 表示Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許Broker自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨4點
deleteWhen=04
#文件保留時間,默認48小時
fileReservedTime=120
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
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 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER

#刷盤方式
#- ASYNC_FLUSH  異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

6.2 修改broker-b.properties文件

vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties 
#所屬集群名字
borkerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示Master, >0 表示Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許Broker自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨4點
deleteWhen=04
#文件保留時間,默認48小時
fileReservedTime=120
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
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 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER

#刷盤方式
#- ASYNC_FLUSH  異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

7.修改兩台機器的日志配置文件(兩個服務器操作相同)

mkdir -p /usr/local/rocketmq/logs cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml

8.修改啟動腳本參數,JVM調優(兩個服務器操作相同)

#broker調優
vim /usr/local/rocketmq/bin/runbroker.sh
 

#nameserver調優
vim /usr/local/rocketmq/bin/runserver.sh

9.啟動NameServer(兩個服務器操作相同)

cd /usr/local/rocketmq/bin nohup sh mqnamesrv & jps--看進程

10.啟動BrokerServer A 服務器A

cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

11.啟動BrokerServer B 服務器B

cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

12. 停止broker命令

cd /usr/local/rocketmq/bin sh mqshutdown broker

13.停止nameserver命令

sh bin/mqshutdown namesrv

 

 

 

參考:

[1]官網,http://rocketmq.apache.org/docs/quick-start/

[2]博客,https://www.cnblogs.com/wrong5566/p/6078592.html

[3]文檔,RocketMQ用戶指南3.2.4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM