rocketmq在linux搭建雙master遇到的坑【轉】

paul_hch發表於2024-08-18

我的環境 兩臺阿里雲centos7伺服器

回到頂部

首先,去官網下載解壓包,解壓。

然後進入bin目錄,需要修改runserver.sh檔案和runbroker.sh檔案。因為rocketmq預設配置檔案需要的記憶體是非常高的。需要改小點。

就是把那兩個檔案的這個引數改得小點。改成512m就可以了

回到頂部

然後啟動Name Server

nohup sh bin/mqnamesrv &
回到頂部

然後啟動broker(有兩種方法,我使用的是第二種方法。)

我使用的是第二種方法,也是我親自成功的。第一種方法我是一直都不成功,很鬱悶。困擾我一個星期。

第一種:

先去安裝的根目錄下執行這個命令,批次建立檔案目錄。因為下面的配置檔案會用到

mkdir -vp store/{commitlog/,consumequeue/,index/,checkpoint/,abort/}

啟動broker複雜一點,需要跟配置檔案。因為這個配置檔案中包含大量的引數,比如brokerName 、namesrvAddr、autoCreateTopicEnable、資料,日誌,索引,存放目錄 等等。如果你不跟這個配置檔案,那你啟動的時候就必須在後面一個一個追加引數。麻煩的一比

當然,預設這個配置檔案裡面的配置是很少的。你需要把原來的刪除掉 給我下面的配置資訊給copy過去就ok。

nohup sh bin/mqbroker  ./conf/2m-noslave/broker-a.properties &

broker-a.properties

複製程式碼
#所屬叢集名字
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/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
複製程式碼

第二種:

在根目錄執行這個命令

sh bin/mqbroker -m >broker.p

broker.p

開啟這個檔案 把我下面的全部複製上去去。替換到原來的

複製程式碼
namesrvAddr=你的叢集地址
brokerIP1=你的外網地址
brokerName=test-a
brokerClusterName=DefaultCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
transactionTimeOut=3000
transactionCheckMax=5
transactionCheckInterval=60000
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=500
commitIntervalCommitLog=200
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
transientStorePoolEnable=false
複製程式碼

然後啟動

nohup sh bin/mqbroker -c broker.p &

回到頂部

檢視是否啟動成功 有 BrokerStartup 和 NamesrvStartup 則說明啟動成功

[root@iZ2zei0nwllapkwklisoncZ apache-rocketmq]# jps
3811 Jps3722 NamesrvStartup
3758 BrokerStartup
回到頂部

關閉

複製程式碼
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
複製程式碼

需要注意的是:需要在阿里雲上開啟三個埠

一個是9876埠 這個是nameServer的埠

一個是10909埠 這個是vip通道的埠

一個是10911埠 這個是broker的埠

坑巨多!!!慢慢發現吧

回到頂部

雙master雙slave的搭建也很簡單。配置檔案修改三個引數

slave的brokerName和主的一樣。

brokerId要大於0

brokerRole這個值要變成SLAVE

轉自

rocketmq在linux搭建雙master遇到的坑 - 發瘋的man - 部落格園
https://www.cnblogs.com/coder-lzh/p/9678477.html

相關文章