利用6台机器搭建一个3分片的broker集群,一共有3个broker实例(3m),采用同步刷屏模式
机器名 |
机器IP |
机器配置 |
备注 |
nameserver1 |
192.168.11.1 |
4C4G |
|
nameserver2 |
192.168.11.2 |
4C4G |
|
nameserver3 |
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<<EOF 192.168.11.1 nameserver1 192.168.11.2 nameserver2 192.168.11.3 nameserver3 EOF
wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
#解压到/usr/local
unzip rocketmq-all-4.7.1-bin-release.zip -d /usr/local/ cd /usr/local/ #创立软链接 ln -s rocketmq-all-4.7.1-bin-release rocketmq
#Ubuntu: sudo apt install -y openjdk-8-jdk* #Centos: sudo yum install -y java-1.8.0-openjdk*
#如果是Ubuntu echo ‘export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/‘>> ~/.bashrc #如果是Centos echo ‘export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/‘>> ~/.bashrc #无论是Ubuntu还是Centos都执行如下: #设置CLASSPATH echo ‘export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib‘>> ~/.bashrc #设置ROCKETMQ_HOME echo ‘export ROCKETMQ_HOME=/usr/local/rocketmq‘>> ~/.bashrc
#添加到PATH echo ‘export PATH=$PATH:$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin‘>> ~/.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/bin sudo ./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=false orderMessageEnable=false listenPort=9876 serverWorkerThreads=8 serverCallbackExecutorThreads=0 serverSelectorThreads=3 serverOnewaySemaphoreValue=256 serverAsyncSemaphoreValue=64 serverChannelMaxIdleTimeSeconds=120 serverSocketSndBufSize=65535 serverSocketRcvBufSize=65535 serverPooledByteBufAllocatorEnable=true useEpollNativeSelector=true EOF
2) 启动nameserver
cd $ROCKETMQ_HOME/bin
nohup ./mqnamesrv -c namesrv.properties &
下面分别配置三台broker
1) 配置broker1的环境变量
cat >> ~/.bashrc << EOF Role=broker1 brokerId=0 GroupName=broker-a EOF
执行:source ~/.bashrc
2)配置broker1的启动配置
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)启动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 &
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 broker sh mqshutdown namesrv
2. 查看broker是否启动
#查看进程 jps -m #查看端口 netstat -tupln|grep -E ‘309|409‘
通过控制台查询
博主:测试生财
座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。
csdn:https://blog.csdn.net/ccgshigao
RocketMQ系列:搭建3m-noslave模式的rocketmq集群
原文:https://www.cnblogs.com/qa-freeroad/p/13737600.html