news 2026/7/27 12:59:26

RocketMQ 4.9.8 集群简易安装教程:两主两从同步复制异步刷盘(CentOS 7.9)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RocketMQ 4.9.8 集群简易安装教程:两主两从同步复制异步刷盘(CentOS 7.9)

上一篇文章较为复杂不太适合初学者,初学者学习集群安装可以看这篇文章。

目录

1. 集群规划与环境准备

1.1 机器规划

1.2 环境准备(所有节点)

2. 配置 NameServer

2.1 修改runserver.sh脚本

3. 配置broker

3.1 修改runbroker.sh

4. 传送包

5. 启动 NameServer

5.1 启动

5.2 验证 NameServer 运行

5.3 NameServer 集群规模选择建议

6. 启动broker

7. 验证部署


1. 集群规划与环境准备

本教程将指导您在 CentOS 7.9(2009 版本)操作系统上,部署一个高可用的 RocketMQ 4.9.8 集群。我们采用经典的“两主两从”架构,并配置为同步复制(SYNC_MASTER)和异步刷盘(ASYNC_FLUSH),以在保证数据可靠性的同时,兼顾写入性能。

1.1 机器规划

假设我们拥有四台服务器,其角色与网络规划如下:

主机名/IPhost角色Broker Name监听端口
192.168.1.101node1NameSrv1,Master 1broker-a10911 (Broker), 10909 (HA)
192.168.1.102node2NameSrv2,Slave 1 (Master 1 的从节点)broker-a-s11911 (Broker), 11909 (HA)
192.168.1.103node3NameSrv3,Master 2broker-b10911 (Broker), 10909 (HA)
192.168.1.104node4Slave 2 (Master 2 的从节点)broker-b-s11911 (Broker), 11909 (HA)

架构说明:

  • 两主两从:两个主 Broker(broker-a, broker-b)分别处理不同 Topic 的读写请求,互为备份。每个主节点都有一个对应的从节点(broker-a-s, broker-b-s),在主节点故障时提供高可用。
  • 同步复制 (SYNC_MASTER):消息在主节点写入成功后,必须同步复制到从节点,从节点确认后才会向生产者返回成功。这保证了数据在主从间的一致性,是数据高可靠的关键。
  • 异步刷盘 (ASYNC_FLUSH):消息写入内存后即返回成功,由后台线程异步将内存数据持久化到磁盘。这牺牲了极小概率的极端故障数据丢失风险,换取了更高的写入吞吐量。

1.2 环境准备(所有节点)

在四台服务器上均执行以下操作:

  1. 系统更新与基础工具
    # 安装必要工具 sudo yum install -y java-1.8.0-openjdk-devel
  2. 配置 Java 环境(可选)
    # 检查 Java 版本 java -version # 应显示 openjdk version "1.8.0_xxx" # 设置 JAVA_HOME (根据实际路径调整) echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> ~/.bashrc echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bashrc source ~/.bashrc

下载 RocketMQ(node1)

# 创建安装目录 sudo mkdir -p /home/erbao/rocketmq cd /home/erbao/rocketmq # 下载 RocketMQ 4.9.8 二进制包 sudo wget https://archive.apache.org/dist/rocketmq/4.9.8/rocketmq-all-4.9.8-bin-release.zip # 解压 sudo unzip rocketmq-all-4.9.8-bin-release.zip sudo mv rocketmq-all-4.9.8-bin-release rocketmq-4.9.8

2. 配置 NameServer

NameServer 是 RocketMQ 的服务发现组件,所有 Broker 和客户端都需要连接它。我们可以在四台机器中的任意三台(例如 101 102 103)上启动 NameServer,以实现高可用。

2.1 修改runserver.sh脚本

RocketMQ 官方建议需要 8G 内存,但开发测试环境或我们的虚拟机中内存一般分配较小,所以需要先修改启动脚本中的堆内存大小。注意生产环境一定要配置8G内存

3. 配置broker

3.1 修改runbroker.sh

配置完namesrv和broker启动脚本中堆内存大小之后不需要再修改别的配置,直接使用默认的就可以。

4. 传送包

将修改好的包传送到其他服务器上

# 其他三台机器需要先创建目录 /home/erbao/rocketmq scp -r /home/erbao/rocketmq/rocketmq-4.9.8/ node2:/home/erbao/rocketmq/ scp -r /home/erbao/rocketmq/rocketmq-4.9.8/ node3:/home/erbao/rocketmq/ scp -r /home/erbao/rocketmq/rocketmq-4.9.8/ node4:/home/erbao/rocketmq/

5. 启动 NameServer

在node1 node2 node3都执行启动脚本

5.1 启动

cd /home/erbao/rocketmq/rocketmq-4.9.8 # 后台启动 NameServer nohup sh bin/mqnamesrv & # 检查日志,确认启动成功 tail -f ~/logs/rocketmqlogs/namesrv.log # 看到 “The Name Server boot success.” 即表示成功


5.2 验证 NameServer 运行

# 查看进程 jps | grep NamesrvStartup # 应显示进程 ID # 查看监听端口 (9876) netstat -tlnp | grep 9876

5.3 NameServer 集群规模选择建议

在规划 RocketMQ 集群时,NameServer 的部署数量是一个常见问题。本文示例部署了两台 NameServer,但实际生产环境中,部署 3 台或更多奇数台 NameServer 通常是更优的选择,原因如下:

  • 高可用与容错:NameServer 采用去中心化设计,各节点之间无数据同步,仅存储路由信息(Broker 心跳上报)。客户端和 Broker 会连接所有配置的 NameServer。部署 3 台可以在其中 1 台故障时,集群仍能正常提供服务(剩余 2 台),而 2 台部署在 1 台故障后只剩单点,虽然仍能工作,但容错能力较弱。
  • 避免“脑裂”感知:虽然 NameServer 本身无状态,但某些客户端 SDK 或管理工具在部分 NameServer 不可达时可能产生警告日志。3 台部署能提供更稳定的连接体验。
  • 资源占用极低:NameServer 进程非常轻量(通常占用内存 < 100MB),增加一台的成本很低,但带来的可用性提升显著。

6. 启动broker

分别在四台机器上执行启动脚本

# 首先进入目录:/home/erbao/rocketmq/rocketmq-4.9.8 # node1 注意namesrv地址之间的分号需要使用转义字符,因为;是bash的命令分隔符,没有转移字符不会当作一条命令执行 nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties -n 192.168.1.101:9876\;192.168.1.102:9876\;192.168.1.103:9876 & # node2 nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties -n 192.168.1.101:9876\;192.168.1.102:9876\;192.168.1.103:9876 & # node3 nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties -n 192.168.1.101:9876\;192.168.1.102:9876\;192.168.1.103:9876 & # node4 nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties -n 192.168.1.101:9876\;192.168.1.102:9876\;192.168.1.103:9876 &

7. 验证部署

name server地址,首先(node1 node3)执行命令

export NAMESRV_ADDR=192.168.1.101:9876\;192.168.1.102:9876\;192.168.1.103:9876

node1执行生产者

cd /home/erbao/rocketmq/rocketmq-4.9.8 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

发送到队列成功,SEND_OK

node3执行消费者

cd /home/erbao/rocketmq/rocketmq-4.9.8 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

消费成功

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 12:58:32

GetQzonehistory终极指南:一键备份QQ空间历史说说的简单方案

GetQzonehistory终极指南&#xff1a;一键备份QQ空间历史说说的简单方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代&#xff0c;您的QQ空间说说记录了无数珍贵回忆&…

作者头像 李华
网站建设 2026/7/27 12:57:45

嵌入式CAN总线中断与ADC配置实战:CP3SP33寄存器级深度解析

1. 项目概述与核心价值在汽车电子、工业自动化这些对实时性和可靠性要求极高的领域里&#xff0c;嵌入式工程师每天都要和两类核心硬件模块打交道&#xff1a;负责节点间通信的CAN控制器&#xff0c;以及负责信号采集的ADC模块。这两者看似独立&#xff0c;实则共同构成了一个稳…

作者头像 李华
网站建设 2026/7/27 12:56:08

手动锡膏印刷机选购指南:专业品牌解析与实用避坑技巧

在电子制造领域&#xff0c;尤其是中小批量生产、研发打样以及实验室场景中&#xff0c;手动锡膏印刷机始终扮演着不可或缺的角色。它不仅是SMT贴片工艺中的关键起始环节&#xff0c;更是决定焊接质量与产品良率的基石。然而&#xff0c;面对市场上琳琅满目的设备与品牌&#x…

作者头像 李华
网站建设 2026/7/27 12:55:25

B站成分检测器:快速识别评论区用户身份的完整指南

B站成分检测器&#xff1a;快速识别评论区用户身份的完整指南 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker B站成分…

作者头像 李华
网站建设 2026/7/27 12:52:24

OLA核心功能解析:为什么它是照明行业的终极旅行适配器

OLA核心功能解析&#xff1a;为什么它是照明行业的终极旅行适配器 【免费下载链接】ola The Open Lighting Architecture - The Travel Adaptor for the Lighting Industry 项目地址: https://gitcode.com/gh_mirrors/ola1/ola The Open Lighting Architecture (OLA) 是…

作者头像 李华