当前位置: 首页 > news >正文

Linux环境 RocketMQ 5.X 三主三从集群部署

本文介绍了如何在Linux环境下,设置3台服务器作为nameserver和brokerserver,实现RocketMQ的2M-2S异步复制集群配置,包括master和slave的配置,服务启动和控制台安装步骤。

一、环境要求

  1. 64bit OS-Linux
  2. 64bit JDK 1.8
  3. 下载安装RocketMQ 5.3.3 版本

二、服务器规划

序号 IP 角色
1 192.168.239.130 nameserver、brokerserver
2 192.168.239.131 nameserver、brokerserver
3 192.168.239.132 nameserver、brokerserver

 

 

 

 

 

 

 

 

 

 

2.1 服务规划

  1. NameServer:每台服务器运行一个 NameServer 实例。
  2. Broker Master:每台服务器运行一个 Master Broker。
  3. Broker Slave:每台服务器运行一个 Slave Broker,作为另一台服务器上的 Master Broker 的从节点。

2.2防火墙规划

确保以下端口开放:

  1. NameServer:9876
  2. Broker Master/Slave:10911, 10912, 10921, 10922
一次放开端口:
sudo firewall-cmd --zone=public --add-port=9876/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10911/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10912/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10921/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10922/tcp --permanent重新加载防火墙规则 :
sudo firewall-cmd --reload检查开放的端口 :
sudo firewall-cmd --list-ports

三、下载安装

关于RocketMQ 5.3.3 下载安装可移步:https://www.cnblogs.com/luotengteng/p/19024820 

先在第一台服务器下载安装包到我们想要安装的目录(本文的安装路径在/usr/local/rocketmq/rocketmq-cluster),然后进行配置文件修改以及日志目录修改,具体如下:

本文是多主多从异步复制集群配置,需要/usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async 目录针对master-a配置以及salve-b进行配置:

 broker-a.properties配置文件如下:(master节点)

# 集群名,不同broker节点集群名是一样的
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master ,>0 表示 Slave
brokerId=0
#nameServer地址,多个用分号分割
namesrvAddr=192.168.239.130:9876;192.168.239.131:9876;192.168.239.132:9876
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.239.130
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上建议关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上建议关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口
listenPort=10921
#用于 Broker 主从同步的监听端口,默认值:listenPort - 1,可自己修改
haListenPort=10922
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=18
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-cluster/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-cluster/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-cluster/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-cluster/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-cluster/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-cluster/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

broker-b-s.properties配置文件如下:(salve节点)

# 集群名,不同broker节点集群名是一样的
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master ,>0 表示 Slave
brokerId=1
#nameServer地址,多个用分号分割
namesrvAddr=192.168.239.130:9876;192.168.239.131:9876;192.168.239.132:9876
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.239.130
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上建议关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上建议关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口
listenPort=10921
#用于 Broker 主从同步的监听端口,默认值:listenPort - 1,可自己修改
haListenPort=10922
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=18
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-cluster/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-cluster/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-cluster/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-cluster/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-cluster/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-cluster/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

注意事项:

1. 两个配置文件中都设置了存储路径,需要注意在自己的服务器上创建相应的目录
2. 注意brokerId的设置,0:表示master 大于0:表示salve
3. 两个配置文件中broker对外服务的监听端口listenPort和haListenPort注意设置不一样,不然会导致端口冲突
4. 分别修改 /usr/local/tools/rocketmq/rocketmq/bin 目录下 runserver.sh 和 runbroker.sh 的JAVA_OPT内存大小,不然启动不了

把第一台服务器的安装配置分别复制到第二和第三台服务器

scp -r /usr/local/rocketmq/rocketmq-cluster luoteng@192.168.239.131:/usr/local/rocketmq/scp -r /usr/local/rocketmq/rocketmq-cluster luoteng@192.168.239.132:/usr/local/rocketmq/

分别修改第二和第三台服务器broker配置,其实和第一台差不多,只是改下broker配置文件名称以及配置文件中的brokerName:

第二台服务器将broker-a.properties改为broker-b.properties,broker-b-s.properties改为broker-c-s.properties
第三台服务器将broker-b.properties改为broker-c.properties,broker-c-s.properties改为broker-a-s.properties
broker-b.properties,broker-c-s.properties配置文件内brokerName分别改为 broker-b,broker-c
broker-c-s.properties,broker-a-s.properties配置文件内brokerName分别改为 broker-c,broker-a

四、服务启动

#第一步:分别在三台服务器启动nameserver
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqnamesrv &#第二步:分别在三台服务器启动master-broker
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-a.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-b.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-c.properties &#第三步:分别在三台服务器启动salve-broker
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-b-s.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-c-s.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-a-s.properties &#分别在三台服务器执行jps命令,查看服务是否全部启动成功:
jps
#没错误的话应该有如下输出:
62196 Jps
8999 NamesrvStartup
18219 BrokerStartup
18015 BrokerStartup

五、修改RocketMQ控制台配置

更改配置文件application.properties,设置刚刚部署的nameserver地址:rocketmq.config.namesrvAddr=192.168.239.130:9876;192.168.239.131:9876;192.168.239.132:9876

重新打包部署:

image

 RocketMQ控制台安装,可以移步:https://www.cnblogs.com/luotengteng/p/19025379

然后访问RocketMQ控制台,可以看到rocketmq集群信息:

image

 至此,RocketMQ三主三从异步复制部署完成。

 

原文参考链接:https://blog.csdn.net/weixin_36818110/article/details/115654762

 

http://www.aitangshan.cn/news/130.html

相关文章:

  • 从嘉手札2025-8-11
  • android开发将项目升级到target35的解决方法
  • 常见光照范围
  • 无监督训练在NLP中的价值体现
  • HFSS许可证多用户支持
  • 【斯普林格出版、快至见刊后1个月检索】第五届现代教育技术与社会科学国际学术会议(ICMETSS 2025)
  • 8.11
  • 统计出哪个时间段在线人数最多
  • HotSpot虚拟机对象探秘 - Charlie
  • 哨兵卫星 在线查看网站
  • ExpeRepair: Dual-Memory Enhanced LLM-based Repository-Level Program Repair 论文笔记
  • GPT5模型工程重构实践
  • rdx与edx之间的关系
  • SSRF靶场
  • ubuntu上Docker的安装与卸载
  • C++编程2025秋课堂教学
  • 防止NLP模型更新中的性能回退技术解析
  • 1431. 拥有最多糖果的孩子
  • 35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
  • 题解:P13685 【MX-X16-T3】「DLESS-3」XOR and Impossible Problem
  • 题解:P13684 【MX-X16-T2】「DLESS-3」XOR and Multiply
  • 有没有哪个勇士能顶顶百度的网盘,限速的太恶心了
  • 库卡机器人tag焊接保护气体流量控制系统
  • 微算法科技(NASDAQ:MLGO)通过蚁群算法求解资源分配的全局最优解,实现低能耗的区块链资源分配
  • VScode编译报错:正在执行任务: CMake: build build failed. * 终端进程启动失败(退出代码: -1)。 * 终端将被任务重用,按任意键关闭。
  • 电风扇离线语音芯片方案设计与应用场景
  • Vue 中操作data中数组的方法中哪些可以触发视图更新, 哪些不可以,不可以的话有什么解决办法?
  • sublimeText安装配置插件-xml2json
  • Hbuilderx编译正常但无法打开微信开发者工具
  • solidity学习之ERC4626