RocketMQ主從搭建


 RocketMQ可分為以下幾種模式:

  • 單點模式

  • 主從模式

  • 雙從模式

  • 雙主雙從模式,多主多從模式

 

  搭建主從模式

tar -zxvf rocketmq-4.6.0.tar.gz -C /usr/local
mv rocketmq-4.6.0 rocketmq

  

  創建存儲目錄

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index    

  

  rocketmq配置文件

vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties

  

 

  broker配置說明:

參數名 默認值 說明
listenPort 10911 接受客戶端連接的監聽端口
namesrvAddr null nameServer 地址
brokerIP1 網卡的 InetAddress 當前 broker 監聽的 IP
brokerIP2 跟 brokerIP1 一樣 存在主從 broker 時,如果在 broker 主節點上配置了 brokerIP2 屬性,broker 從節點會連接主節點配置的 brokerIP2 進行同步
brokerName null broker 的名稱
brokerClusterName DefaultCluster 本 broker 所屬的 Cluser 名稱
brokerId 0 broker id, 0 表示 master, 其他的正整數表示 slave
storePathCommitLog $HOME/store/commitlog/ 存儲 commit log 的路徑
storePathConsumerQueue $HOME/store/consumequeue/ 存儲 consume queue 的路徑
mappedFileSizeCommitLog 1024 * 1024 * 1024(1G) commit log 的映射文件大小
deleteWhen 04 在每天的什么時間刪除已經超過文件保留時間的 commit log
fileReservedTime 72 以小時計算的文件保留時間
brokerRole ASYNC_MASTER SYNC_MASTER/ASYNC_MASTER/SLAVE
flushDiskType ASYNC_FLUSH SYNC_FLUSH/ASYNC_FLUSH SYNC_FLUSH 模式下的 broker 保證在收到確認生產者之前將消息刷盤。ASYNC_FLUSH 模式下的 broker 則利用刷盤一組消息的模式,可以取得更好的性能。

 

  

#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker 名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a|broker-b
#0 表示 Master, >0 表示 Slave
#多網卡需要配置
#brokerIP1=部署broker的ip
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

  

 

  rocketmq會根據當前網卡選擇一個IP使用,當機器存在多塊多網卡,很有可能會有問題;

Caused by:
org.apache.rocketmq.remoting.exception.RemotingConnectException: sendDefaultImpl call timeout

  

  

  解決多網卡:

  1.broker.conf,ip為自己的ip

#namsrv的ip
namesrvAddr=192.168.211.128:9876
#部署broker的ip
brokerIP1=192.168.211.128

  

 

  從節點配置

  brokerRole修改成SLAVE,brokerId改成大於0;拷貝配置到從節點

 scp -r rocketmq/ 192.168.211.129:/usr/local

  

  主節點和從節點啟動namesrv

nohup sh bin/mqnamesrv &

  

  主節點啟動

nohup sh bin/mqbroker  -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &

  

  從節點啟動

nohup sh bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &

  

  修改日志配置文件

mkdir -p /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml

  

  

  修改腳本啟動參數

 

  vim /usr/local/rocketmq/bin/runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"

  

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

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM