RocketMQ系列:搭建3m-noslave模式的rocketmq集羣

利用6臺機器搭建一個3分片的broker集羣,一共有3個broker實例(3m),採用同步刷屏模式java

1.引言

本文主要介紹如何在三臺機器上搭建一個3m(無slave節點的)rocketmq的集羣。apache

2.環境準備

機器名json

機器IP

機器配置bash

備註app

nameserver1ide

192.168.11.1

4C4G性能


nameserver2測試

192.168.11.2

4C4Gspa


nameserver3.net

192.168.11.3

4C4G


broker1

192.168.11.4 8C16G

broker2

192.168.11.5 8C16G

broker3

192.168.11.6 8C16G

2.1 配置hostname

這裏設置是爲了方便管理機器節點,也能夠跳過此處。

#nameserver1上執行:
hostnamectl set-hostname nameserver1
#nameserver2上執行:
hostnamectl set-hostname nameserver2
#nameserver3上執行:
hostnamectl set-hostname nameserver3
#broker1上執行:
hostnamectl set-hostname broker1
#broker2上執行:
hostnamectl set-hostname broker2
#broker3上執行:
hostnamectl set-hostname broker3

2.2 設置hosts

在broker1,broker2,broker3分別執行:

cat >>/etc/hosts<<EOF192.168.11.1 nameserver1192.168.11.2 nameserver2192.168.11.3 nameserver3
EOF

3. 具體步驟

3.1 下載rocketmq的編譯好的二進制包(4.7.1版本)

wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

3.2 解壓縮到到/usr/local/mq目錄,並建立軟連接

 rocketmq-all-.-bin-release. -d /usr/local/cd /usr/local/
#創立軟連接 -s rocketmq-all-.-bin-release rocketmq

3.3 安裝java

#Ubuntu:sudo apt install -y  openjdk-8-jdk*#Centos:sudo yum install -y java-1.8.0-openjdk*

4.初始化環境

4.1 設置環境變量

#若是是Ubuntu >> ~/.bashrc
#若是是Centos >> ~/.bashrc

#不管是Ubuntu仍是Centos都執行以下:
#設置CLASSPATH >> ~/.bashrc
#設置ROCKETMQ_HOME >> ~/.bashrc
#添加到PATH >> ~/.bashrc

4.2 加載環境變量

source ~/.bashrc

4.3  建立目錄

#/data目錄的空間至少爲1T+mkdir -pv {/data/logs,/data/rocketmq/store/commitlog}

4.4 修改rocketmq的主目錄

sed -i 's#${user.home}#/data#g' $ROCKETMQ_HOME/conf/*.xml

4.5 修改Linux系統參數提升性能

cd $ROCKETMQ_HOME/binsudo ./os.sh

5 啓動

5.1 啓動nameserver

1) 生成配置

分別在nameserver1,nameserver2,nameserver3上執行:

#進入Rockmq的bin目錄
cd $ROCKETMQ_HOME/bin
#生產nameserver的配置cat >> namesrv.properties << EOF
rocketmqHome=/usr/local/rocketmq
kvConfigPath=/root/namesrv/kvConfig.json
productEnvName=center
clusterTest=falseorderMessageEnable=falselistenPort=9876serverWorkerThreads=8serverCallbackExecutorThreads=0serverSelectorThreads=3serverOnewaySemaphoreValue=256serverAsyncSemaphoreValue=64serverChannelMaxIdleTimeSeconds=120serverSocketSndBufSize=65535serverSocketRcvBufSize=65535serverPooledByteBufAllocatorEnable=trueuseEpollNativeSelector=trueEOF

2) 啓動nameserver

cd $ROCKETMQ_HOME/bin
nohup ./mqnamesrv -c namesrv.properties &

5.2 啓動broker

下面分別配置三臺broker

5.2.1 配置Rocket集羣

1) 配置broker1的環境變量

cat >> ~/.bashrc << EOF
Role=broker1
brokerId=0GroupName=broker-a
EOF

 執行:source ~/.bashrc

2)配置broker1的啓動配置

cd $ROCKETMQ_HOMEcat >conf/dledger/qmq-${Role}.conf<<EOF
brokerClusterName=QMQ
brokerId=${brokerId}
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerName=${GroupName}
namesrvAddr=nameserver1:9876;nameserver2:9876;nameserver3:9876storePathRootDir=/data/rocketmq/${Role}
storePathCommitLog=/data/rocketmq/${Role}/commitlog
enableDLegerCommitLog=false#凌晨4點觸發一次刪除
deleteWhen = 04diskMaxUsedSpaceRatio=50#只保留最近1天的消息
fileReservedTime = 24sendMessageThreadPoolNums=8defaultTopicQueueNums=16maxTransferCountOnMessageInMemory=1000waitTimeMillsInSendQueue=1000transientStorePoolEnable=falsewarmMapedFileEnable=falsetransferMsgByHeap=truemaxTransferCountOnMessageInMemory=2000maxTransferBytesOnMessageInMemory=2000*1024EOF

3)啓動broker1

cd $ROCKETMQ_HOME/bin
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/dledger/qmq-${Role}.conf &

 


1)配置broker2環境變量

cat >> ~/.bashrc << EOF

Role=broker2

brokerId=0

GroupName=broker-b EOF

 執行:source ~/.bashrc

2)配置broker2的啓動配置

cd $ROCKETMQ_HOME
cat >conf/dledger/qmq-${Role}.conf<<EOF
brokerClusterName=QMQ
brokerId=${brokerId}
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerName=${GroupName}
namesrvAddr=nameserver1:9876;nameserver2:9876;nameserver3:9876
storePathRootDir=/data/rocketmq/${Role}
storePathCommitLog=/data/rocketmq/${Role}/commitlog
enableDLegerCommitLog=false
#凌晨4點觸發一次刪除
deleteWhen = 04
diskMaxUsedSpaceRatio=50
#只保留最近1天的消息
fileReservedTime = 24
sendMessageThreadPoolNums=8
defaultTopicQueueNums=16
maxTransferCountOnMessageInMemory=1000
waitTimeMillsInSendQueue=1000
transientStorePoolEnable=false
warmMapedFileEnable=false
transferMsgByHeap=true
maxTransferCountOnMessageInMemory=2000
maxTransferBytesOnMessageInMemory=2000*1024
EOF

3)啓動broker2

cd $ROCKETMQ_HOME/bin
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/dledger/qmq-${Role}.conf &

1)配置broker3環境變量

cat >> ~/.bashrc << EOF
Role=broker3
brokerId=0
GroupName=broker-c
EOF

 執行:source ~/.bashrc

2)配置broker3的啓動配置

cd $ROCKETMQ_HOME
cat >conf/dledger/qmq-${Role}.conf<<EOF
brokerClusterName=QMQ
brokerId=${brokerId}
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerName=${GroupName}
namesrvAddr=nameserver1:9876;nameserver2:9876;nameserver3:9876
storePathRootDir=/data/rocketmq/${Role}
storePathCommitLog=/data/rocketmq/${Role}/commitlog
enableDLegerCommitLog=false
#凌晨4點觸發一次刪除
deleteWhen = 04
diskMaxUsedSpaceRatio=50
#只保留最近1天的消息
fileReservedTime = 24
sendMessageThreadPoolNums=8
defaultTopicQueueNums=16
maxTransferCountOnMessageInMemory=1000
waitTimeMillsInSendQueue=1000
transientStorePoolEnable=false
warmMapedFileEnable=false
transferMsgByHeap=true
maxTransferCountOnMessageInMemory=2000
maxTransferBytesOnMessageInMemory=2000*1024
EOF

3)啓動broker3

cd $ROCKETMQ_HOME/bin
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/dledger/qmq-${Role}.conf &

5.3 其它命令

Broker其它命令

1. 關閉broker

sh mqshutdown brokersh mqshutdown namesrv

2. 查看broker是否啓動

#查看進程
jps -m

#查看端口
netstat -tupln|grep -E '309|409'

5.4 查看集羣信息

經過控制檯查詢

 

 

 

 

博主:測試生財

座右銘:專一測試與自動化,致力提升研發效能;經過測試精進完成原始積累,經過讀書理財奔向財務自由。

csdn:https://blog.csdn.net/ccgshigao

博客園:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

相關文章
相關標籤/搜索