第八章:手把手教老婆實現:RocketMQ集羣模式(3)-RocketMQ主從-多Master多Slave模式

技術活,該賞
點贊再看,養成好習慣
複製代碼

RocketMQ使用教程相關係列 目錄docker


第一節:服務器準備

這裏搭建的是雙主雙從集羣,採用同步複製,異步刷盤的方式搭建集羣。vim

安裝四臺虛擬機,以下。centos

IP hostname mastername
192.168.88.135 rocketmq-nameserver4 rocketmq-master2-salave1
192.168.88.134 rocketmq-nameserver3 rocketmq-master2
192.168.88.133 rocketmq-nameserver2 rocketmq-master1-slave1
192.168.88.131 rocketmq-nameserver1 rocketmq-master1

 

安裝虛擬機傳送門-->服務器

第二節:安裝RocketMQ

在每臺機器上安裝RocketMQ,這裏就再也不重複了markdown

第一章:RocketMQ安裝-->傳送門異步

重點的再說明下oop

建立rocketmq存儲目錄

現有的目錄結構是這樣的post

0

 建立存儲目錄spa

mkdir logs
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index
複製代碼

0

修改日誌路徑.net

進入conf 目錄,替換全部xml中的${user.home},保證日誌路徑正確

0

0

語法:

sed -i 批量替換做用

sed -i 's#原字符串#新字符串#g' 替換的文件
sed -i 's#${user.home}#/usr/local/server/mq/rocketmq#g' *.xml
複製代碼

0

說明替換成功了

0

修改 runbroker.sh

調整內存大小(這裏只是演示用途,實際的內存大小要以生產環境爲準)

 

cd ..
cd bin/
vim runbroker.sh
複製代碼

0

0

調整爲1g

0

 修改 runserver.sh

調整內存大小(這裏只是演示用途,實際的內存大小要以生產環境爲準)

vim runserver.sh
複製代碼

0

0

第三節:配置

配置hosts

在host文件中配置地址與IP的映射關係

修改每臺機器的/etc/hosts文件,加入以下映射關係

vim /etc/hosts
複製代碼

 

192.168.88.131 rocketmq-nameserver1
192.168.88.131 rocketmq-master1
192.168.88.133 rocketmq-nameserver2
192.168.88.133 rocketmq-master1-slave1
192.168.88.134 rocketmq-nameserver3
192.168.88.134 rocketmq-master2
192.168.88.135 rocketmq-nameserver4
192.168.88.135 rocketmq-master2-slave1
複製代碼

配置完成後, 重啓網卡

systemctl restart network
複製代碼

rocketmq 環境變量配置

vim /etc/profile
複製代碼

在profile文件的末尾加入以下命令

#set rocketmq
ROCKETMQ_HOME=/usr/local/server/mq/rocketmq/
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
複製代碼

輸入:wq! 保存並退出, 並使得配置馬上生效:

source /etc/profile
複製代碼

jdk安裝

centos安裝open-jdk8-->傳送門

主從配置

主機:192.168.88.131

cd /usr/local/server/mq/rocketmq/conf
cd 2m-2s-sync/
vim broker-a.properties
複製代碼

0

#所屬集羣名字
brokerClusterName=xuzhu_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 對外服務的監聽端口
brokerIP1=192.168.88.131
brokerIP2=192.168.88.131
listenPort=10911
#刪除文件時間點,默認凌晨 4 點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog 每一個文件的大小默認 1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue 每一個文件默認存 30W 條,根據業務狀況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間 checkTransactionMessageEnable
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/server/mq/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/server/mq/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/server/mq/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/server/mq/rocketmq/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/server/mq/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/server/mq/rocketmq/store/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=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
#默認該值爲false,表示該Broker不承載系統自定義用於存儲消息軌跡的topic
traceTopicEnable=false
複製代碼

重點配置:

#broker 名字,注意此處不一樣的配置文件填寫的不同
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer 地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#Broker 的角色
#- ASYNC_MASTER 異步複製 Master
#- SYNC_MASTER 同步雙寫 Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
複製代碼

移除broker-a-s.properties

rm -rf broker-a-s.properties
複製代碼

0

複製broker-a.properties到broker-a-s.properties再修改

cp broker-a.properties ./broker-a-s.properties
vim broker-a-s.properties 
複製代碼

0

重點配置修改:

#broker 名字,注意此處不一樣的配置文件填寫的不同
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer 地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#Broker 的角色
#- ASYNC_MASTER 異步複製 Master
#- SYNC_MASTER 同步雙寫 Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
複製代碼

移除broker-b.properties,複製broker-a.properties到broker-b.properties再修改

rm -rf broker-b.properties
cp broker-a.properties ./broker-b.properties
vim broker-b.properties 
複製代碼

0

重點配置修改:

#broker 名字,注意此處不一樣的配置文件填寫的不同
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer 地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#Broker 的角色
#- ASYNC_MASTER 異步複製 Master
#- SYNC_MASTER 同步雙寫 Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
複製代碼

移除broker-b-s.properties,複製broker-a-s.properties到broker-b-s.properties再修改

rm -rf broker-b-s.properties
cp broker-a-s.properties ./broker-b-s.properties
vim broker-b-s.properties 
複製代碼

0

重點配置修改:

#broker 名字,注意此處不一樣的配置文件填寫的不同
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer 地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#Broker 的角色
#- ASYNC_MASTER 異步複製 Master
#- SYNC_MASTER 同步雙寫 Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
複製代碼

同步配置到多臺服務器

獲取同步路徑

0

主機192.168.88.131進入/usr/local/server/mq/rocketmq/conf/2m-2s-sync目錄下

scp *.properties 192.168.88.133:/usr/local/server/mq/rocketmq/conf/2m-2s-sync
複製代碼

0

其餘幾臺服務器也是相似的作法複製過去

0

第四節:啓動

先啓動master主機和slave主機的namesrv

nohup sh mqnamesrv > /dev/null 2>&1 &
複製代碼

0

啓動broker

不一樣的服務器,啓動的broker文件是不同的

主1,啓動broker

nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-sync/broker-a.properties > /dev/null 2>&1 &
複製代碼

0

從1,啓動broker

 

nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-sync/broker-a-s.properties > /dev/null 2>&1 &
複製代碼

0

主2,啓動broker 

nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-sync/broker-b.properties > /dev/null 2>&1 &
複製代碼

0

從2,啓動broker 

nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-sync/broker-b-s.properties > /dev/null 2>&1 &
複製代碼

0

 第五節:驗證主從是否啓動

啓動

事先要查詢下docker 有沒有存在容器rocketmq-console-ng,若是有,要先刪除

對docker不熟悉的同窗,傳送門-->docker 經常使用操做容器命令

docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.88.131:9876;192.168.88.133:9876;192.168.88.134:9876;192.168.88.135:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t --name rocketmq-console-ng  styletang/rocketmq-console-ng
複製代碼

0

如圖所示,兩主雙從的集羣已經搭建成功。

相關文章
相關標籤/搜索