RocketMQ 双主双从集群 豆包总结版本
·
📝 RocketMQ 双主双从集群 完整版总结(带注释 + 重启步骤 + 常用命令)
一、我们最终完成了什么?
- 搭建成功:RocketMQ 4.9.4 双主双从异步复制集群(2m-2s-async)
- 服务器节点
- 10.XX.XX.5:broker-a (主)、broker-b (从)
- 10.XX.XX.6:broker-b (主)、broker-a (从)
- 统一规范路径(所有配置 / 日志 / 存储集中管理)
- 配置文件:
/apps/rocketmq/conf/ - 日志文件:
/apps/rocketmq/logs/ - 存储文件:
/apps/rocketmq/store*
- 配置文件:
- 配置系统环境变量:全局调用
mqadmin/mqnamesrv/mqbroker命令 - 修复所有问题:端口占用、JVM 内存、IP 错误、集群注册失败、分隔符冲突
二、核心固定配置(牢记)
properties
# 集群名称
brokerClusterName=rocketmq-cluster
# NameServer地址(配置文件/命令行 分号!!!)
namesrvAddr=10.XX.XX.5:9876;10.XX.XX.6:9876
三、环境变量配置(已永久生效)
文件:/etc/profile(最后一行)
# ###################### RocketMQ 环境变量 ######################
# RocketMQ安装根目录
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release
# 将RocketMQ的bin目录加入系统PATH,全局调用命令
export PATH=$PATH:$ROCKETMQ_HOME/bin
✅ 生效命令(修改后执行):source /etc/profile
四、🔥 服务器重启后 | 完整启动步骤(必看!)
通用前提:两台服务器都执行
# 1. 杀死所有残留的RocketMQ进程(防止端口占用)
sh mqshutdown namesrv
sh mqshutdown broker
# 强制清理(备用)
ps -ef | grep -E "mqnamesrv|mqbroker" | grep -v grep | awk '{print $2}' | xargs kill -9 2>/dev/null
# 2. 创建日志目录(防止启动失败)
mkdir -p /apps/rocketmq/logs/
步骤 1:在 10.XX.XX.5 执行
# 启动NameServer(加载自定义配置文件)
nohup sh mqnamesrv -c /apps/rocketmq/conf/namesrv.properties >/apps/rocketmq/logs/mqnamesrv.log 2>&1 & tail -f /apps/rocketmq/logs/mqnamesrv.log
# 启动 broker-a 主节点
nohup sh mqbroker -c /apps/rocketmq/conf/broker-a.properties >/apps/rocketmq/logs/broker-a.log 2>&1 & tail -f /apps/rocketmq/logs/broker-a.log
# 启动 broker-b 从节点
nohup sh mqbroker -c /apps/rocketmq/conf/broker-b-s.properties >/apps/rocketmq/logs/broker-b-s.log 2>&1 & tail -f /apps/rocketmq/logs/broker-b-s.log
步骤 2:在 10.XX.XX.6 执行
# 启动NameServer(加载自定义配置文件)
nohup sh mqnamesrv -c /apps/rocketmq/conf/namesrv.properties >/apps/rocketmq/logs/mqnamesrv.log 2>&1 & tail -f /apps/rocketmq/logs/mqnamesrv.log
# 启动 broker-b 主节点
nohup sh mqbroker -c /apps/rocketmq/conf/broker-b.properties >/apps/rocketmq/logs/broker-b.log 2>&1 & tail -f /apps/rocketmq/logs/broker-b.log
# 启动 broker-a 从节点
nohup sh mqbroker -c /apps/rocketmq/conf/broker-a-s.properties >/apps/rocketmq/logs/broker-a-s.log 2>&1 & tail -f /apps/rocketmq/logs/broker-a-s.log
五、✅ 集群验证命令(任意目录执行)
# 查看集群状态(最核心!显示4个节点=成功)
mqadmin clusterList -n 10.XX.XX.5:9876
六、常用运维命令(带注释)
# 1. 关闭NameServer
sh mqshutdown namesrv
# 2. 关闭Broker
sh mqshutdown broker
# 3. 查看NameServer日志
tail -f /apps/rocketmq/logs/mqnamesrv.log
# 4. 查看Broker日志
tail -f /apps/rocketmq/logs/broker-a.log
# 5. 检查端口监听(9876=NameServer,10911/11911=Broker)
netstat -lntp | grep -E '9876|10911|11911'
# 6. 检查RocketMQ进程
ps -ef | grep -E "mqnamesrv|mqbroker" | grep -v grep
七、关键注意事项(避坑)
- 启动顺序:必须先启动 NameServer,再启动 Broker
- 进程管理:重启前必须杀死旧进程,防止端口占用
- 配置统一:所有 Broker 的
brokerClusterName必须完全一致 - 环境变量:修改
/etc/profile后,必须执行source /etc/profile生效 - 日志路径:固定使用
/apps/rocketmq/logs/,方便排查问题
broker-a.properties
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=10.XX.XX.5:9876;10.XX.XX.6:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=18
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/apps/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/apps/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/apps/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/apps/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/apps/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
#打开锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=3000
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=10.XX.XX.5
broker-a-s.properties
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=10.XX.XX.5:9876;10.XX.XX.6:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11911
haListenPort=11912
#删除文件时间点,默认凌晨 4点
deleteWhen=18
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/rocketmq/store-a-s
#commitLog 存储路径
storePathCommitLog=/apps/rocketmq/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/apps/rocketmq/store-s/consumequeue
#消息索引存储路径
storePathIndex=/apps/rocketmq/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/apps/rocketmq/store-s/checkpoint
#abort 文件存储路径
abortFile=/apps/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128
#打开锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=3000
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=10.XX.XX.6
broker-b.properties
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=10.XX.XX.5:9876;10.XX.XX.6:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=18
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/rocketmq/store-b
#commitLog 存储路径
storePathCommitLog=/apps/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/apps/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/apps/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/apps/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/apps/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
#打开锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=3000
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=10.XX.XX.6
broker-b-s.properties
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=10.XX.XX.5:9876;10.XX.XX.6:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11911
haListenPort=11912
#删除文件时间点,默认凌晨 4点
deleteWhen=18
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/rocketmq/store-b-s
#commitLog 存储路径
storePathCommitLog=/apps/rocketmq/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/apps/rocketmq/store-s/consumequeue
#消息索引存储路径
storePathIndex=/apps/rocketmq/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/apps/rocketmq/store-s/checkpoint
#abort 文件存储路径
abortFile=/apps/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128
#打开锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=3000
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=10.XX.XX.5
namesrv.properties
listenPort=9876
更多推荐

所有评论(0)