利用6臺機器搭建一個3分片的broker集羣,一共有3個broker實例(3m),採用同步刷屏模式java
本文主要介紹如何在三臺機器上搭建一個3m(無slave節點的)rocketmq的集羣。apache
機器名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 |
這裏設置是爲了方便管理機器節點,也能夠跳過此處。
#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
在broker1,broker2,broker3分別執行:
cat >>/etc/hosts<<EOF192.168.11.1 nameserver1192.168.11.2 nameserver2192.168.11.3 nameserver3 EOF
wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
rocketmq-all-.-bin-release. -d /usr/local/cd /usr/local/ #創立軟連接 -s rocketmq-all-.-bin-release rocketmq
#Ubuntu:sudo apt install -y openjdk-8-jdk*#Centos:sudo yum install -y java-1.8.0-openjdk*
#若是是Ubuntu >> ~/.bashrc #若是是Centos >> ~/.bashrc #不管是Ubuntu仍是Centos都執行以下: #設置CLASSPATH >> ~/.bashrc #設置ROCKETMQ_HOME >> ~/.bashrc #添加到PATH >> ~/.bashrc
source ~/.bashrc
#/data目錄的空間至少爲1T+mkdir -pv {/data/logs,/data/rocketmq/store/commitlog}
sed -i 's#${user.home}#/data#g' $ROCKETMQ_HOME
/conf/*.xml
cd $ROCKETMQ_HOME/binsudo ./os.sh
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 &
下面分別配置三臺broker
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 &
Broker其它命令
1. 關閉broker
sh mqshutdown brokersh mqshutdown namesrv
2. 查看broker是否啓動
#查看進程 jps -m #查看端口 netstat -tupln|grep -E '309|409'
經過控制檯查詢
博主:測試生財
座右銘:專一測試與自動化,致力提升研發效能;經過測試精進完成原始積累,經過讀書理財奔向財務自由。
csdn:https://blog.csdn.net/ccgshigao