Rocketmq集羣搭建步驟

最近在學習RocketMq, 根據網上的搭建步驟, 成功搭建了RocketMq集羣環境, 然後在這裏做記錄, 方便後面學習查看 .


瞭解幾種集羣方式:

  • 單Master方式
    風險比較大, 一旦Broker重啓或者宕機, 將導致整個環境不可用, 不建議線上使用.
  • 多Master模式
    一個集羣中沒有slave, 全是master, 例如2個master或者3個master.
    優點:配置簡單, 單個Master宕機或重啓對應用無影響, 磁盤配置爲RAID10時, 即使機器宕機不可恢復, 由於RAID10磁盤非常可靠, 消息也不會丟(異步刷盤丟失少量信息, 同步刷盤一條不丟)
    缺點 : 單臺機器宕機期間, 這個機器上未被消費消息在機器恢復之前不可訂閱, 消息實時性受到影響 .

  • 多Master多Slave模式, 異步複製
    每個 Master 配置一個 Slave,有多對Master-Slave,採用異步複製方式,主備有短暫消息延遲,毫秒級。
    優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因爲Master 宕機後,消費者仍然可以從 Slave消費,此過程對應用透明。不需要人工干預。性能同Master 模式幾乎一樣。
    缺點:Master 宕機,磁盤損壞情況,會丟失少量消息。

  • 多Master多Slave模式, 同步雙寫
    每個 Master 配置一個 Slave,有多對Master-Slave,採用同步雙寫方式,主備都寫成功,嚮應用返回成功。
    優點:數據與服務都無單點,Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高
    缺點:性能比異步複製模式略低,大約低 10%左右,發送單個消息的 RT會略高。目前主宕機後,備機不能自動切換爲主機,後續會支持自動切換功能。

開始搭建:

我們這裏採用雙Master方式 .
機器1 : 192.168.223.144
機器2 : 192.168.223.145

  • 在兩臺機器的hosts文件中添加如下信息:
    vim /etc/hosts
    這裏寫圖片描述
  • 上傳並進行解壓
    上傳alibaba-rocketmq-3.2.6.tar.gz文件至/usr/local/application (本人將所有安裝軟件都放在application目錄下)
    tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/application
    mv alibaba-rocketmq-3.2.6 alibaba-rocketmq
    ln -s alibaba-rocketmq rocketmq
    執行完上面命令之後, application目錄如下 :
    這裏寫圖片描述
  • 創建存儲路徑
    mkdir /usr/local/application/rocketmq/store
    mkdir /usr/local/application/rocketmq/store/commitlog
    mkdir /usr/local/application/rocketmq/store/consumequeue
    mkdir /usr/local/application/rocketmq/store/index
  • 修改兩臺機器rocketmq配置文件
    vim /usr/local/application/rocketmq/conf/2m-noslave/broker-a.properties
    vim /usr/local/application/rocketmq/conf/2m-noslave/broker-b.properties
    注意 :
    下面的broker名字, 不同的配置文件填寫的不一樣.
#所屬集羣名字
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/application/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/application/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/application/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/application/rocketmq/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/application/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/application/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/application/rocketmq/logs
    cd /usr/local/application/rocketmq/conf && sed -i ‘s#${user.home}#/usr/local/application/rocketmq#g’ *.xml
  • 修改兩臺機器啓動腳本參數
    設置虛擬器啓動大小爲1G, 最大爲1G, 新生代爲512M
    vim /usr/local/application/rocketmq/bin/runbroker.sh
    這裏寫圖片描述
    vim /usr/local/application/rocketmq/bin/runserver.sh
    這裏寫圖片描述
  • 先分別啓動兩臺機器的NameServer
    cd /usr/local/application/rocketmq/bin
    nohup sh mqnamesrv &

  • 然後分別啓動兩臺機器的BrokerServer.

    • BrokerServer A(192.168.223.144)(指定配置文件爲:broker-a.properties)
      cd /usr/local/application/rocketmq/bin
      nohup sh mqbroker -c /usr/local/application/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
    • BrokerServer B(192.168.223.145)(指定配置文件:broker-b.properties)
      cd /usr/local/application/rocketmq/bin
      nohup sh mqbroker -c /usr/local/application/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
  • 查看各自啓動日誌是否正常
    tail -f -n 500 /usr/local/application/rocketmq/logs/rocketmqlogs/broker.log
    tail -f -n 500 /usr/local/application/rocketmq/logs/rocketmqlogs/namesrv.log
  • jps查看進程是否存在
    這裏寫圖片描述

管控臺搭建:

下載rocketmq-console.war, 並在tomcat中部署rocketmq-console.war

  • 利用unzip命令進行解壓.
    這裏寫圖片描述
  • 修改配置文件
    修改這個目錄下的config.properties文件
    /usr/local/application/tomcat/apache-tomcat-7.0.69/webapps/rocketmq-console/WEB-INF/classes
    這裏寫圖片描述
  • 保存後, 啓動tomcat
    這裏寫圖片描述

至此rocketmq集羣搭建完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章