1. 程式人生 > >RocketMQ雙Master+雙Slave叢集環境搭建

RocketMQ雙Master+雙Slave叢集環境搭建

準備四臺機子:
主機1192.168.2.3
主機2192.168.2.4
從機1192.168.2.5
從機2192.168.2.6
1、關閉四臺機子的防火牆:
service iptables stop
2、修改四臺機子的主機檔案:
vi /ect/hosts
192.168.2.3 rocketmq-nameserver1
192.168.2.3 rocketmq-master1
192.168.2.4 rocketmq-nameserver2
192.168.2.4 rocketmq-master2
192.168.2.5 rocketmq-nameserver3
192.168.2.5 rocketmq-master1-slave
192.168.2.6 rocketmq-nameserver4
192.168.2.6 rocketmq-master2-slave
3、重啟網絡卡:
service network restart
4、上傳rocketmq的包,然後解壓並修改資料夾名稱,建立軟連線:
tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/
mv alibaba-rocketmq-3.2.6 alibaba-rocketmq 
ln -s rocketmq -> alibaba-rocketmq/

5、為四臺機子建立儲存資料夾:
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
6、為四臺機子修改配置檔案: cd /usr/local/alibaba-rocketmq-3.2.6/conf/2m-2s-async

vim broker-a.properties
複製如下內容:
#所屬叢集名字
 brokerClusterName=rocketmq-cluster
 #broker名字,注意此處不同的配置檔案填寫的不一樣
 brokerName=broker-a
 #0 表示 Master,>0 表示 Slave
 brokerId=0
 #nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4: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
vim 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;rocketmq-nameserver3:9876;rocketmq-nameserver4: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=SLAVE
#刷盤方式 #- ASYNC_FLUSH  非同步刷盤 #- SYNC_FLUSH  同步刷盤
 flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發訊息執行緒池數量 #sendMessageThreadPoolNums=128 #拉訊息執行緒池數量 #pullMessageThreadPoolNums=128
vim broker-b.properties
#所屬叢集名字
 brokerClusterName=rocketmq-cluster
 #broker名字,注意此處不同的配置檔案填寫的不一樣
 brokerName=broker-b
 #0 表示 Master,>0 表示 Slave
 brokerId=0
 #nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4: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
vim 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;rocketmq-nameserver3:9876;rocketmq-nameserver4: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=SLAVE
#刷盤方式 #- ASYNC_FLUSH  非同步刷盤 #- SYNC_FLUSH  同步刷盤
 flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發訊息執行緒池數量 #sendMessageThreadPoolNums=128 #拉訊息執行緒池數量 #pullMessageThreadPoolNums=128
7、修改四臺機子日誌配置檔案:
mkdir -p /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
8、修改四臺機子啟動引數:
vim /usr/local/rocketmq/bin/runbroker.sh

vim /usr/local/rocketmq/bin/runserver.

9、啟動四臺機子nameserver:
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
10、分別啟動四臺機子broker: 主機1:
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties  >/dev/null 2>&1 &
主機2:
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties  >/dev/null 2>&1 &
從機1:
hup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties  >/dev/null 2>&1 &
從機2:
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties  >/dev/null 2>&1 &
11、部署控制檯並訪問顯示如下成功: