RocketMQ-手把手教你搭建集群
生活随笔
收集整理的這篇文章主要介紹了
RocketMQ-手把手教你搭建集群
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、集群架構
二、準備rocketmqOS1主機
三、修改rocketmqOS1配置文件
配置文件位置
修改broker-a.properties
修改broker-b-s.properties
其它配置
四、準備rocketmqOS2主機
五、修改rocketmqOS2配置文件
修改broker-b.properties
修改broker-a-s.properties
六、啟動服務器
啟動NameServer集群
啟動兩個Master
啟動兩個Slave
七、mqadmin命令
一、集群架構
????????這里要搭建一個雙主雙從異步復制的Broker集群。為了方便,這里使用了兩臺主機來完成集群的搭建。 ????????這兩臺主機的功能與broker角色分配如下表。二、準備rocketmqOS1主機
準備rocketmqOS主機,并修改配置。指定主機名為rocketmqOS1。
三、修改rocketmqOS1配置文件
配置文件位置
要修改的配置文件在rocketMQ解壓目錄的conf/2m-2s-async目錄中。修改broker-a.properties
將該配置文件內容修改為如下: # 指定整個broker集群的名稱,或者說是RocketMQ集群的名稱 brokerClusterName=DefaultCluster # 指定master-slave集群的名稱。一個RocketMQ集群可以包含多個master-slave集群 brokerName=broker-a # master的brokerId為0 brokerId=0 # 指定刪除消息存儲過期文件的時間為凌晨4點 deleteWhen=04 # 指定未發生更新的消息存儲文件的保留時長為48小時,48小時后過期,將會被刪除 fileReservedTime=48 # 指定當前broker為異步復制master brokerRole=ASYNC_MASTER # 指定刷盤策略為異步刷盤 flushDiskType=ASYNC_FLUSH # 指定Name Server的地址 namesrvAddr=192.168.59.164:9876;192.168.59.165:9876修改broker-b-s.properties
將該配置文件內容修改為如下: brokerClusterName=DefaultCluster # 指定這是另外一個master-slave集群 brokerName=broker-b # slave的brokerId為非0 brokerId=1 deleteWhen=04 fileReservedTime=48 # 指定當前broker為slave brokerRole=SLAVE flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.59.164:9876;192.168.59.165:9876 # 指定Broker對外提供服務的端口,即Broker與producer與consumer通信的端口。默認 10911。由于當前主機同時充當著master1與slave2,而前面的master1使用的是默認端口。這 里需要將這兩個端口加以區分,以區分出master1與slave2 listenPort=11911 # 指定消息存儲相關的路徑。默認路徑為~/store目錄。由于當前主機同時充當著master1與 slave2,master1使用的是默認路徑,這里就需要再指定一個不同路徑 storePathRootDir=~/store-s storePathCommitLog=~/store-s/commitlog storePathConsumeQueue=~/store-s/consumequeue storePathIndex=~/store-s/index storeCheckpoint=~/store-s/checkpoint abortFile=~/store-s/abort其它配置
除了以上配置外,這些配置文件中還可以設置其它屬性。?
#指定整個broker集群的名稱,或者說是RocketMQ集群的名稱 brokerClusterName=rocket-MS #指定master-slave集群的名稱。一個RocketMQ集群可以包含多個master-slave集群 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=nameserver1:9876;nameserver2:9876 #默認為新建Topic所創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議生產環境中關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議生產環境中關閉 autoCreateSubscriptionGroup=true #Broker對外提供服務的端口,即Broker與producer與consumer通信的端口 listenPort=10911 #HA高可用監聽端口,即Master與Slave間通信的端口,默認值為listenPort+1 haListenPort=10912 #指定刪除消息存儲過期文件的時間為凌晨4點 deleteWhen=04 #指定未發生更新的消息存儲文件的保留時長為48小時,48小時后過期,將會被刪除 fileReservedTime=48 #指定commitLog目錄中每個文件的大小,默認1G mapedFileSizeCommitLog=1073741824 #指定ConsumeQueue的每個Topic的每個Queue文件中可以存放的消息數量,默認30w條 mapedFileSizeConsumeQueue=300000 #在清除過期文件時,如果該文件被其他線程所占用(引用數大于0,比如讀取消息),此時會阻止 此次刪除任務,同時在第一次試圖刪除該文件時記錄當前時間戳。該屬性則表示從第一次拒絕刪除 后開始計時,該文件最多可以保留的時長。在此時間內若引用數仍不為0,則刪除仍會被拒絕。不過 時間到后,文件將被強制刪除 destroyMapedFileIntervalForcibly=120000 #指定commitlog、consumequeue所在磁盤分區的最大使用率,超過該值,則需立即清除過期文件 diskMaxUsedSpaceRatio=88 #指定store目錄的路徑,默認在當前用戶主目錄中 storePathRootDir=/usr/local/rocketmq-all-4.5.0/store #commitLog目錄路徑 storePathCommitLog=/usr/local/rocketmq-all-4.5.0/store/commitlog #consumeueue目錄路徑 storePathConsumeQueue=/usr/local/rocketmq-all-4.5.0/store/consumequeue #index目錄路徑 storePathIndex=/usr/local/rocketmq-all-4.5.0/store/index #checkpoint文件路徑 storeCheckpoint=/usr/local/rocketmq-all-4.5.0/store/checkpoint #abort文件路徑 abortFile=/usr/local/rocketmq-all-4.5.0/store/abort #指定消息的最大大小 maxMessageSize=65536 #Broker的角色 # - ASYNC_MASTER 異步復制Master # - SYNC_MASTER 同步雙寫Master # - SLAVE brokerRole=SYNC_MASTER #刷盤策略 # - ASYNC_FLUSH 異步刷盤 # - SYNC_FLUSH 同步刷盤 flushDiskType=SYNC_FLUSH #發消息線程池數量 sendMessageThreadPoolNums=128 #拉消息線程池數量 pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統默認自動識別,但多網卡 時IP地址可能讀取錯誤 brokerIP1=192.168.3.105四、準備rocketmqOS2主機
準備rocketmqOS1主機,并修改配置。指定主機名為rocketmqOS2。
五、修改rocketmqOS2配置文件
????????對于rocketmqOS2主機,同樣需要修改rocketMQ解壓目錄的conf目錄的子目錄2m-2s-async中的兩個配置文件。修改broker-b.properties
將該配置文件內容修改為如下: brokerClusterName=DefaultCluster brokerName=broker-b brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.59.164:9876;192.168.59.165:9876修改broker-a-s.properties
將該配置文件內容修改為如下: brokerClusterName=DefaultCluster brokerName=broker-a brokerId=1 deleteWhen=04 fileReservedTime=48 brokerRole=SLAVE flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.59.164:9876;192.168.59.165:9876 listenPort=11911 storePathRootDir=~/store-s storePathCommitLog=~/store-s/commitlog storePathConsumeQueue=~/store-s/consumequeue storePathIndex=~/store-s/index storeCheckpoint=~/store-s/checkpoint abortFile=~/store-s/abort六、啟動服務器
啟動NameServer集群
分別啟動rocketmqOS1與rocketmqOS2兩個主機中的NameServer。啟動命令完全相同。 nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log啟動兩個Master
????????分別啟動rocketmqOS1與rocketmqOS2兩個主機中的broker master。注意,它們指定所要加載的配置文件是不同的。 nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties & tail -f ~/logs/rocketmqlogs/broker.log nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties & tail -f ~/logs/rocketmqlogs/broker.log啟動兩個Slave
????????分別啟動rocketmqOS1與rocketmqOS2兩個主機中的broker slave。注意,它們指定所要加載的配置文件是不同的。 nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties & tail -f ~/logs/rocketmqlogs/broker.log nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties & tail -f ~/logs/rocketmqlogs/broker.log七、mqadmin命令
運維專用命令,后續再出
總結
以上是生活随笔為你收集整理的RocketMQ-手把手教你搭建集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMQ-什么是死信队列?怎么解
- 下一篇: java使用jstat分析内存