千家信息网

RocketMQ多Master集群模式部署

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1 概述多Master集群模式指的是一个集群无Slave,全是Maste。优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10 时,即使机器宕机不可恢复情由于RAID1
千家信息网最后更新 2026年11月02日RocketMQ多Master集群模式部署

1 概述

多Master集群模式指的是一个集群无Slave,全是Maste。

优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10 时,即使机器宕机不可恢复情
由于RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最高。

缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到受到影响。

1 环境信息

序号IP地址主机名用户角色模式
1192.168.3.41rocketmq01rootnameServer1,brokerServer1Master1
2192.168.3.42rocketmq02rootnameServer2,brokerServer2Master2

2 安装前准备工作

2.1 /etc/hosts配置
cat >> /etc/hosts << EOF192.168.3.41       rocketmq-nameserver1192.168.3.41       rocketmq-master1192.168.3.42       rocketmq-nameserver2192.168.3.42       rocketmq-master2EOF
2.2 Java环境部署

在/usr/目录下创建java目录

mkdir /usr/local/java cd /usr/local/java 

下载jdk,然后解压

curl -O http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gztar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/java

设置环境变量

cat >> /etc/profile << EOF#set java environment JAVA_HOME=/usr/local/java/jdk1.8.0_171JRE_HOME=/usr/java/jdk1.8.0_171/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATHEOF

让修改生效

source /etc/profile

验证JDK有效性

java -version java version "1.8.0_171"Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

3 安装rocketmq

3.1 上传解压【两台机器操作】
mkdir /usr/local/rocketmq4.2cd /usr/local/rocketmq4.2curl -O https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zipunzip rocketmq-all-4.2.0-bin-release.ziprm -f rocketmq-all-4.2.0-bin-release.zipcd /usr/localln -s rocketmq4.2 rocketmqll /usr/local
3.2 创建存储路径【两台机器操作】
mkdir /usr/local/rocketmq/storemkdir /usr/local/rocketmq/store/commitlogmkdir /usr/local/rocketmq/store/consumequeuemkdir /usr/local/rocketmq/store/index
3.3 RocketMQ配置文件配置【两台机器】
vim /usr/local/rocketmq/conf/2m-noslave/broker-a.propertiesvim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

broker-a.properties配置文件内容如下:

#所属集群名字brokerClusterName=rocketmq-cluster#broker名字,注意此处不同的配置文件填写的不一样brokerName=broker-a#0 表示 Master,>0 表示 SlavebrokerId=0#nameServer地址,分号分割namesrvAddr=192.168.3.41:9876;192.168.3.42:9876#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数defaultTopicQueueNums=4#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=true#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=true#Broker 对外服务的监听端口listenPort=10911#删除文件时间点,默认凌晨 4点deleteWhen=04#文件保留时间,默认 48 小时fileReservedTime=120#commitLog每个文件的大小默认1GmapedFileSizeCommitLog=1073741824#ConsumeQueue每个文件默认存30W条,根据业务情况调整mapedFileSizeConsumeQueue=300000#destroyMapedFileIntervalForcibly=120000#redeleteHangedFileInterval=120000#检测物理文件磁盘空间diskMaxUsedSpaceRatio=88#存储路径storePathRootDir=/usr/local/alibaba-rocketmq/store#commitLog 存储路径storePathCommitLog=/usr/local/alibaba-rocketmq/store/commitlog#消费队列存储路径存储路径storePathConsumeQueue=/usr/local/alibaba-rocketmq/store/consumequeue#消息索引存储路径storePathIndex=/usr/local/alibaba-rocketmq/store/index#checkpoint 文件存储路径storeCheckpoint=/usr/local/alibaba-rocketmq/store/checkpoint#abort 文件存储路径abortFile=/usr/local/alibaba-rocketmq/store/abort#限制的消息大小maxMessageSize=65536#flushCommitLogLeastPages=4#flushConsumeQueueLeastPages=2#flushCommitLogThoroughInterval=10000#flushConsumeQueueThoroughInterval=60000#Broker 的角色#- ASYNC_MASTER 异步复制Master#- SYNC_MASTER 同步双写Master#- SLAVEbrokerRole=ASYNC_MASTER#刷盘方式#- ASYNC_FLUSH 异步刷盘#- SYNC_FLUSH 同步刷盘flushDiskType=ASYNC_FLUSH#checkTransactionMessageEnable=false#发消息线程池数量#sendMessageThreadPoolNums=128#拉消息线程池数量#pullMessageThreadPoolNums=128

broker-b.properties配置文件内容如下:

#所属集群名字brokerClusterName=rocketmq-cluster#broker名字,注意此处不同的配置文件填写的不一样brokerName=broker-b#0 表示 Master,>0 表示 SlavebrokerId=0#nameServer地址,分号分割namesrvAddr=192.168.3.41:9876;192.168.3.42:9876#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数defaultTopicQueueNums=4#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=true#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=true#Broker 对外服务的监听端口listenPort=10911#删除文件时间点,默认凌晨 4点deleteWhen=04#文件保留时间,默认 48 小时fileReservedTime=120#commitLog每个文件的大小默认1GmapedFileSizeCommitLog=1073741824#ConsumeQueue每个文件默认存30W条,根据业务情况调整mapedFileSizeConsumeQueue=300000#destroyMapedFileIntervalForcibly=120000#redeleteHangedFileInterval=120000#检测物理文件磁盘空间diskMaxUsedSpaceRatio=88#存储路径storePathRootDir=/usr/local/alibaba-rocketmq/store#commitLog 存储路径storePathCommitLog=/usr/local/alibaba-rocketmq/store/commitlog#消费队列存储路径存储路径storePathConsumeQueue=/usr/local/alibaba-rocketmq/store/consumequeue#消息索引存储路径storePathIndex=/usr/local/alibaba-rocketmq/store/index#checkpoint 文件存储路径storeCheckpoint=/usr/local/alibaba-rocketmq/store/checkpoint#abort 文件存储路径abortFile=/usr/local/alibaba-rocketmq/store/abort#限制的消息大小maxMessageSize=65536#flushCommitLogLeastPages=4#flushConsumeQueueLeastPages=2#flushCommitLogThoroughInterval=10000#flushConsumeQueueThoroughInterval=60000#Broker 的角色#- ASYNC_MASTER 异步复制Master#- SYNC_MASTER 同步双写Master#- SLAVEbrokerRole=ASYNC_MASTER#刷盘方式#- ASYNC_FLUSH 异步刷盘#- SYNC_FLUSH 同步刷盘flushDiskType=ASYNC_FLUSH#checkTransactionMessageEnable=false#发消息线程池数量#sendMessageThreadPoolNums=128#拉消息线程池数量#pullMessageThreadPoolNums=128
3.4 修改日志配置文件【两台机器】
mkdir -p /usr/local/rocketmq/logscd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
3.5 修改启动脚本参数【两台机器】
cd /usr/local/rocketmq/binvim runbroker.sh#将JAVA_OPT修改为JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"vim runserver.sh#将JAVA_OPT修改为JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"
3.6 启动NameServer【两台机器】
cd /usr/local/rocketmq/binnohup sh mqnamesrv &
3.7 启动BrokerServer A【192.168.3.41】
cd /usr/local/rocketmq/binnohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties > /dev/null 2>&1 &netstat -ntlpjpstail -500f  /usr/local/rocketmq/logs/rocketmqlogs/broker.logtail -500f  /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
3.8 启动BrokerServer B【192.168.3.42】
cd /usr/local/rocketmq/binnohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties > /dev/null 2>&1 &netstat -ntlpjpstail -500f /usr/local/rocketmq/logs/rocketmqlogs/broker.logtail -500f /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

下面的是我的公众号二维码,欢迎关注。文章转载请注明出处www.leexide.com

文件 路径 存储 消息 机器 配置 同步 集群 名字 大小 建议 数量 时间 磁盘 线程 队列 服务 地址 环境 角色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 湖北九亚互联网络科技有限公司 广州紫鲸互联网科技有限公司 互联网科技保险 疫情对互联网科技公司影响 安徽鑫晟辉互联网科技 金融科技和互联网金融 盛创互联网科技有限公司 滨湖区互联网智能科技产品供应 科技大学互联网专业好不好 中国科技互联网公司收入 互联网科技实习生岗位职责 新兴科技互联网创新大赛颁奖典礼 佛山市翊博互联网络科技有限公司 阿里互联网科技企业 上海京穆互联网科技有限公司 雨阳互联网卡科技有限公司 互联网科技资金流入 悟空问答互联网科技 北京品多多互联网科技有限公司 互联网属科技 南京欣网互联网科技 广州善班互联网科技 成都狮子座互联网科技 西藏七维空间互联网科技有限公司 新华互联网科技2019 重庆威客帮互联网科技 用友工业互联网科技发展 科技互联网的核心竞争力 信承诺互联网科技有限公司
0