RocketMQ多Master模式

  瞭解了RocketMQ的基本知識後,咱們先來學習一下RocketMQ的多Master模式。web

  多Master模式:集羣中不存在Slave節點,集羣中全部節點都是Master節點。優勢是配置簡單,單個Master宕機或重啓對應用沒有影響。可是若是某個節點的Master宕機以後,該節點上未被消費的消息在節點恢復以前沒法訂閱和消費,實時性受到影響。apache


  集羣搭建過程:tomcat

  • 服務器劃分

     

  • 修改本地hosts信息

      命令:vi /etc/hosts服務器

      增長以下信息:app

       

       修改完以後,測試服務器之間是否能夠ping通。webapp


  • 上傳RocketMQ文件並解壓

       兩臺服務器分別上傳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指的是索引,可以快速定位到具體消息。

 

  • RocketMQ配置文件

     分別修改兩臺服務器上的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

      

    

  • 啓動NameServer

     分別操做兩臺服務器,執行以下命令:

       cd /usr/local/rocketmq/bin
       nohup sh mqnamesrv &

      查看啓動日誌:

        tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

       使用jps命令查看是否啓動


  • 啓動BrokerServer

     分別操做兩臺服務器,執行以下命令:

       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模式的集羣搭建完畢。

相關文章
相關標籤/搜索