1. 修改RocketMQ默認啓動端口
因爲只有兩臺機器,部署雙主雙從須要四個節點,因此只能修改rocketmq的默認啓動端口,從官網下載rocketmq的source文件,解壓後使用idea打開,全局搜索9876,將全部使用9876端口的地方改成9877。html
在終端打開,使用:mvn -Prelease-all -DskipTests clean install命令打包,打包完成後在項目的distribution\target將會有以下兩個包:linux
分別是linux和win下運行的包。服務器
將後綴爲.tar.gz的包上傳到服務器上。並使用tar -zxvf 文件名解壓異步
2. 建立數據存儲文件夾
在解壓後的文件夾中新建數據存儲文件夾ide
mkdir /usr/local/middle/rocketmq-9877/data #commitLog 存儲路徑 mkdir /usr/local/middle/rocketmq-9877/data/commitlog #消費隊列存儲路徑存儲路徑 mkdir /usr/local/middle/rocketmq-9877/data/consumequeue #消息索引存儲路徑 mkdir /usr/local/middle/rocketmq-9877/data/index
兩臺服務器上都要上傳包和在新傳的包解壓收的文件夾下都要新建文件夾。這裏算上樓主以前上傳的默認端口的rocketmq節點,每臺已經有兩個節點了。兩臺機器恰好能夠作四個節點,雙主雙從。post
3. 修改log文件
跟雙master時操做同樣,就再也不詳述,文章最後會放搭建雙Master集羣步驟的連接。學習
4. 修改配置文件
分別進入兩臺機器的rocketmq目錄下的conf/2m-2s-sync/下,共有四個文件:idea
分別作以下配置spa
broker-a.properties線程
#所屬集羣名字 borkerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同 brokerName=broker-a #0 表示Master, >0 表示Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877; #在發消息時,自動建立服務器不存在的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/middle/rocketmq/data #commitLog存儲路徑 storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog #消費隊列存儲路徑 storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue #消息索引存儲路徑 storePathIndex=/usr/local/middle/rocketmq/data/index #checkpoint 文件存儲路徑 storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint #abort 文件存儲路徑 abortFile=/usr/local/middle/rocketmq/data/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量
broker-a-s.properties
#所屬集羣名字 borkerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同 brokerName=broker-a #0 表示Master, >0 表示Slave brokerId=1 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877; #在發消息時,自動建立服務器不存在的topic,默認建立的隊列數 defaultTopicQueueNums=4 #是否容許Broker自動建立Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否容許Broker自動建立訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10915 #刪除文件時間點,默認凌晨4點 deleteWhen=04 #文件保留時間,默認48小時 fileReservedTime=120 #commitLog每一個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每一個文件默認存30W條,根據業務狀況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/usr/local/middle/rocketmq/data #commitLog存儲路徑 storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog #消費隊列存儲路徑 storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue #消息索引存儲路徑 storePathIndex=/usr/local/middle/rocketmq/data/index #checkpoint 文件存儲路徑 storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint #abort 文件存儲路徑 abortFile=/usr/local/middle/rocketmq/data/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=SYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128
broker-b.properties
#所屬集羣名字 borkerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同 brokerName=broker-b #0 表示Master, >0 表示Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877; #在發消息時,自動建立服務器不存在的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/middle/rocketmq/data #commitLog存儲路徑 storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog #消費隊列存儲路徑 storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue #消息索引存儲路徑 storePathIndex=/usr/local/middle/rocketmq/data/index #checkpoint 文件存儲路徑 storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint #abort 文件存儲路徑 abortFile=/usr/local/middle/rocketmq/data/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量
broker-b-s.properties
#所屬集羣名字 borkerClusterName=rocketmq-cluster #broker名字,注意此處不一樣的配置文件填寫的不同 brokerName=broker-b #0 表示Master, >0 表示Slave brokerId=1 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver1:9877;rocketmq-nameserver2:9877; #在發消息時,自動建立服務器不存在的topic,默認建立的隊列數 defaultTopicQueueNums=4 #是否容許Broker自動建立Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否容許Broker自動建立訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10910 #刪除文件時間點,默認凌晨4點 deleteWhen=04 #文件保留時間,默認48小時 fileReservedTime=120 #commitLog每一個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每一個文件默認存30W條,根據業務狀況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/usr/local/middle/rocketmq/data #commitLog存儲路徑 storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog #消費隊列存儲路徑 storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue #消息索引存儲路徑 storePathIndex=/usr/local/middle/rocketmq/data/index #checkpoint 文件存儲路徑 storeCheckPoint=/usr/local/middle/rocketmq/data/checkpoint #abort 文件存儲路徑 abortFile=/usr/local/middle/rocketmq/data/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=SYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128
配置文件中的各個數據存儲目錄根據本身路徑狀況自行修改。
5. 修改日誌文件
參照雙Master.
6. 修改後傳入的節點的JVM啓動參數
參照雙Master;
7. 啓動NameServer和Broker
參照雙Master
四個節點都啓動完成後,啓動控制檯,能夠看到
代表四個節點的Broker已經啓動成功,且一個Master對應一個Slave,且當向Broker發送消息時,主從節點直接消息一致。
此時咱們先向集羣發送消息(不消費),而後停掉一臺主節點。
啓動Consumer,消息仍然能夠徹底消費,恰好驗證了從節點在集羣中的做用,保證Master掛掉時消息不會丟失。
雙Maste集羣隨筆傳送門:RocketMQ學習筆記(4)----RocketMQ搭建雙Master集羣
注意:
broker啓動後會佔用三個端口:
服務器監聽端口(默認10911)
高可用端口(監聽slave的請求),端口占用爲服務器監聽端口+1
快速服務器端口(VIP服務端口,也就是說客戶端能夠選擇使用服務器監聽端口或者這個端口通訊,通常建議是設置VIP渠道爲false的,即便用服務器監聽端口通訊【不設置就是10911這個端口】),這個端口的值爲服務器監聽端口-2,
因此在配置broker.properties時不要佔用到默認端口計算以後會佔用的端口,若是你啓動多主多從,也要注意本身配置的端口狀況。固然若是一臺機器上只有一個節點,那麼能夠不用在乎這個問題。