瞭解了RocketMQ的基本知識後,咱們先來學習一下RocketMQ的多Master模式。web
多Master模式:集羣中不存在Slave節點,集羣中全部節點都是Master節點。優勢是配置簡單,單個Master宕機或重啓對應用沒有影響。可是若是某個節點的Master宕機以後,該節點上未被消費的消息在節點恢復以前沒法訂閱和消費,實時性受到影響。apache
集羣搭建過程:tomcat
命令:vi /etc/hosts服務器
增長以下信息:app
修改完以後,測試服務器之間是否能夠ping通。webapp
兩臺服務器分別上傳RocketMQ文件,本次使用的是alibaba-rocketmq-3.2.6.tar.gz 文件。而後解壓,命令:異步
tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local學習
在/usr/local路徑下建立軟鏈接:測試
ln -s alibaba-rocketmq rocketmqspa
在兩臺服務器上分別建立以下目錄:
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
其中,store表示RocketMQ文件的存儲路徑,commitlog是指消息存放的物理文件,consumequeue是消息的隊列,至關於字典的目錄用來指定消息在消息的真正的物理文件commitLog上的位置。index指的是索引,可以快速定位到具體消息。
分別修改兩臺服務器上的Broker配置文件:
vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
vi /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
修改內容以下:
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同。與本身修改的文件名同樣 brokerName=broker-a|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
在兩臺服務器上分別執行以下命令:
mkdir -p /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
分別修改兩臺服務器在啓動broker和server時的內存分配參數:
vi /usr/local/rocketmq/bin/runbroker.sh
vi /usr/local/rocketmq/bin/runserver.sh
分別操做兩臺服務器,執行以下命令:
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
查看啓動日誌:
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
使用jps命令查看是否啓動
分別操做兩臺服務器,執行以下命令:
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
此處須要注意,134服務器執行broker-a.properties,而136服務器是broker-b.properties。
查看日誌:
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
此時,使用jps命令查看,能夠看到nameServer和brokerServer已經啓動,以下:
也可使用RocketMQ的控制檯進行查看,須要在tomcat中部署 rocketmq-console.war文件,並修改配置文件,以下:
cd /usr/local/apache-tomcat-7.0.73/webapps/rocketmq-console/WEB-INF/classes
vi config.properties
修改以下:
啓動tomcat,訪問以下地址:
http://192.168.91.136:8080/rocketmq-console/
效果以下:
至此,多Master模式的集羣搭建完畢。