1. 程式人生 > 實用技巧 >2. RocketMQ 2Master和 2Slave模式部署

2. RocketMQ 2Master和 2Slave模式部署

  1. 版本選擇

    版本部署使用者部署目錄
    rocketmq-all-4.6.1-bin-release rocketmq-console-ng-2.0.0.jar bybank /data/app

    rocketmq-console下載地址:https://github.com/apache/rocketmq-externals

  2. 描述資訊

    每個 Master 配置一個 Slave,有多對Master-Slave,HA採用同步雙寫方式,主備都寫成功,嚮應用返回成功。

    優點:資料與服務都無單點,Master宕機情況下,訊息無延遲,服務可用性與資料可用性都非常高。
    缺點:效能比非同步複製模式略低,大約低10%左右,傳送單個訊息的RT會略高。目前主宕機後,備機不能自動切換為主機,後續會支援自動切換功能。

    ### 先啟動 NameServer
    ### 在機器 A,啟動第一個 Master
    ### 在機器 B,啟動第二個 Master
    ### 在機器 C,啟動第一個 Slave
    ### 在機器 D,啟動第二個 Slave
    以上 Broker 與 Slave 配對是通過指定相同的brokerName 引數來配對,Master的 BrokerId 必須是 0,Slave 的BrokerId 必須是大與 0 的數。
    另外一個 Master 下面可以掛載多個 Slave,同一 Master 下的多個 Slave通過指定不同的 BrokerId來區分。

  3. 伺服器IP資訊

    序號IP地址角色模式
    A 192.168.160.98
     nameServer1,brokerServer1 
    Master1
    B 192.168.160.99
    nameServer2,brokerServer2
    Master2
    C 192.168.160.101
     nameServer3,brokerServer3 
    Master1-slave1
    D 192.168.160.102
    nameServer3,brokerServer4
    Master2-slave2

  4. 主機修改hostname【4臺伺服器】

    # cat /etc/hosts

    192.168.160.98 rocketmq-nameserver1
    192.168.160.98 rocketmq-master1
    192.168.160.99 rocketmq-nameserver2
    192.168.160.99 rocketmq-master2
    192.168.160.101 rocketmq-master1-slave1
    192.168.160.102 rocketmq-master2-slave1

  5. 上傳解壓【4臺伺服器】

    #cd /data/app;unzip rocketmq-all-4.6.1-bin-release # mv rocketmq-all-4.6.1-bin-release rocketmq-4.6.1 # ln -s rocketmq-4.6.1 rocketmq

  6. 建立儲存路徑【4臺伺服器】

    #mkdir /data/app/rocketmq/store
    #mkdir /data/app/rocketmq/store/commitlog
    #mkdir /data/app/rocketmq/store/consumequeue
    #mkdir /data/app/rocketmq/store/index



  7. 修改RocketMQ配置檔案【4臺機器】

    【broker-a.properties檔案】

    #所屬叢集名字
    brokerClusterName=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=/data/app/rocketmq/store
    #commitLog 儲存路徑
    storePathCommitLog=/data/app/rocketmq/store/commitlog
    #消費佇列儲存路徑儲存路徑
    storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
    #訊息索引儲存路徑
    storePathIndex=/data/app/rocketmq/store/index
    #checkpoint 檔案儲存路徑
    storeCheckpoint=/data/app/rocketmq/store/checkpoint
    #abort 檔案儲存路徑
    abortFile=/data/app/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
    #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統預設自動識別,但多網絡卡時IP地址可能讀取錯誤
    brokerIP1=192.168.160.98


    【broker-a-s.properties檔案】

    #所屬叢集名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此處不同的配置檔案填寫的不一樣
    brokerName=broker-a
    #0 表示 Master,>0 表示 Slave
    brokerId=1
    #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=/data/app/rocketmq/store
    #commitLog 儲存路徑
    storePathCommitLog=/data/app/rocketmq/store/commitlog
    #消費佇列儲存路徑儲存路徑
    storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
    #訊息索引儲存路徑
    storePathIndex=/data/app/rocketmq/store/index
    #checkpoint 檔案儲存路徑
    storeCheckpoint=/data/app/rocketmq/store/checkpoint
    #abort 檔案儲存路徑
    abortFile=/data/app/rocketmq/store/abort
    #限制的訊息大小
    maxMessageSize=65536
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    #Broker 的角色
    #- ASYNC_MASTER 非同步複製Master
    #- SYNC_MASTER 同步雙寫Master
    #- SLAVE
    brokerRole=SLAVE
    #刷盤方式
    #- ASYNC_FLUSH 非同步刷盤
    #- SYNC_FLUSH 同步刷盤
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #發訊息執行緒池數量
    #sendMessageThreadPoolNums=128
    #拉訊息執行緒池數量
    #pullMessageThreadPoolNums=128
    #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統預設自動識別,但多網絡卡時IP地址可能讀取錯誤
    brokerIP1=192.168.160.101

    【broker-b.properties檔案】

    #所屬叢集名字
    brokerClusterName=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=/data/app/rocketmq/store
    #commitLog 儲存路徑
    storePathCommitLog=/data/app/rocketmq/store/commitlog
    #消費佇列儲存路徑儲存路徑
    storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
    #訊息索引儲存路徑
    storePathIndex=/data/app/rocketmq/store/index
    #checkpoint 檔案儲存路徑
    storeCheckpoint=/data/app/rocketmq/store/checkpoint
    #abort 檔案儲存路徑
    abortFile=/data/app/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
    #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統預設自動識別,但多網絡卡時IP地址可能讀取錯誤
    brokerIP1=192.168.160.99

    【broker-b-s.properties檔案】

    #所屬叢集名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此處不同的配置檔案填寫的不一樣
    brokerName=broker-b
    #0 表示 Master,>0 表示 Slave
    brokerId=1
    #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=/data/app/rocketmq/store
    #commitLog 儲存路徑
    storePathCommitLog=/data/app/rocketmq/store/commitlog
    #消費佇列儲存路徑儲存路徑
    storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
    #訊息索引儲存路徑
    storePathIndex=/data/app/rocketmq/store/index
    #checkpoint 檔案儲存路徑
    storeCheckpoint=/data/app/rocketmq/store/checkpoint
    #abort 檔案儲存路徑
    abortFile=/data/app/rocketmq/store/abort
    #限制的訊息大小
    maxMessageSize=65536
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    #Broker 的角色
    #- ASYNC_MASTER 非同步複製Master
    #- SYNC_MASTER 同步雙寫Master
    #- SLAVE
    brokerRole=SLAVE
    #刷盤方式
    #- ASYNC_FLUSH 非同步刷盤
    #- SYNC_FLUSH 同步刷盤
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #發訊息執行緒池數量
    #sendMessageThreadPoolNums=128
    #拉訊息執行緒池數量
    #pullMessageThreadPoolNums=128
    #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統預設自動識別,但多網絡卡時IP地址可能讀取錯誤
    brokerIP1=192.168.160.102

  8. 修改啟動指令碼引數【4臺伺服器】

    # vim/data/app/rocketmq/bin/runbroker.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
    XX:PermSize=128m -XX:MaxPermSize=320m"

    # vim /data/app/rocketmq/bin/runserver.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
    XX:PermSize=128m -XX:MaxPermSize=320m"

    描述: 根據伺服器資源調整JVM

  9. 啟動NameServer【4臺伺服器】

    #cd /data/app/rocketmq/bin # sh mynamesrv &

  10. 啟動BrokerServer【4臺伺服器】

    【192.168.160.98】
    nameserver啟動方式:cd/data/app/rocketmq/bin/;shmqnamesrv&
    broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-a.properties>/dev/null2>&1&
    【192.168.160.99】
    nameserver啟動方式:cd/data/app/rocketmq/bin/;shmqnamesrv&
    broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-b.properties>/dev/null2>&1&

    【192.168.160.101】
    broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-a-s.properties>/dev/null2>&1&

    【192.168.160.102】
    broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-b-s.properties>/dev/null2>&1&



  11. 服務狀態查詢






  12. rocketmq-console-ng 安裝

    描述: 可以獨立服務,可以任意挑選一臺伺服器安裝

    a. 官網下載rocketmq-console-ng安裝包
    b. 在rocketmq-externals-master\rocketmq-console\src\main\resources下修改配置檔案application.properties,配置

    c.進入到 rocketmq-console 資料夾下,執行maven打包操作【打包可以使用jenkins測試打包服務192.168.138.191打包】

    #cd /存放路徑/rocketmq-console # /data/jenkins/tools/hudson.tasks.Maven_MavenInstallation/3.5.0/bin/mvn clean package -U -Dmaven.test.skip=true

    d. 找到包target/rocketmq-console-ng-2.0.0.jar下載下來,拷貝到192.168.160.98伺服器執行命令

    # java -jar target/rocketmq-console-ng-2.0.0.jar &

    e. 網頁訪問



【安裝包下載】

console預設賬戶密碼:admin/admin