RocketMQ 4.9.8 集群简易安装教程:两主两从同步复制异步刷盘(CentOS 7.9) 上一篇文章较为复杂不太适合初学者初学者学习集群安装可以看这篇文章。目录1. 集群规划与环境准备1.1 机器规划1.2 环境准备所有节点2. 配置 NameServer2.1 修改runserver.sh脚本3. 配置broker3.1 修改runbroker.sh4. 传送包5. 启动 NameServer5.1 启动5.2 验证 NameServer 运行5.3 NameServer 集群规模选择建议6. 启动broker7. 验证部署1. 集群规划与环境准备本教程将指导您在 CentOS 7.92009 版本操作系统上部署一个高可用的 RocketMQ 4.9.8 集群。我们采用经典的“两主两从”架构并配置为同步复制SYNC_MASTER和异步刷盘ASYNC_FLUSH以在保证数据可靠性的同时兼顾写入性能。1.1 机器规划假设我们拥有四台服务器其角色与网络规划如下主机名/IPhost角色Broker Name监听端口192.168.1.101node1NameSrv1Master 1broker-a10911 (Broker), 10909 (HA)192.168.1.102node2NameSrv2Slave 1 (Master 1 的从节点)broker-a-s11911 (Broker), 11909 (HA)192.168.1.103node3NameSrv3Master 2broker-b10911 (Broker), 10909 (HA)192.168.1.104node4Slave 2 (Master 2 的从节点)broker-b-s11911 (Broker), 11909 (HA)架构说明两主两从两个主 Brokerbroker-a, broker-b分别处理不同 Topic 的读写请求互为备份。每个主节点都有一个对应的从节点broker-a-s, broker-b-s在主节点故障时提供高可用。同步复制 (SYNC_MASTER)消息在主节点写入成功后必须同步复制到从节点从节点确认后才会向生产者返回成功。这保证了数据在主从间的一致性是数据高可靠的关键。异步刷盘 (ASYNC_FLUSH)消息写入内存后即返回成功由后台线程异步将内存数据持久化到磁盘。这牺牲了极小概率的极端故障数据丢失风险换取了更高的写入吞吐量。1.2 环境准备所有节点在四台服务器上均执行以下操作系统更新与基础工具# 安装必要工具 sudo yum install -y java-1.8.0-openjdk-devel配置 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下载 RocketMQnode1# 创建安装目录 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.82. 配置 NameServerNameServer 是 RocketMQ 的服务发现组件所有 Broker 和客户端都需要连接它。我们可以在四台机器中的任意三台例如 101 102 103上启动 NameServer以实现高可用。2.1 修改runserver.sh脚本RocketMQ 官方建议需要 8G 内存但开发测试环境或我们的虚拟机中内存一般分配较小所以需要先修改启动脚本中的堆内存大小。注意生产环境一定要配置8G内存3. 配置broker3.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 98765.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_ADDR192.168.1.101:9876\;192.168.1.102:9876\;192.168.1.103:9876node1执行生产者cd /home/erbao/rocketmq/rocketmq-4.9.8 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer发送到队列成功SEND_OKnode3执行消费者cd /home/erbao/rocketmq/rocketmq-4.9.8 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer消费成功

相关新闻

最新新闻

MBTI本土化:互联网梗文化如何重构人格测试

MBTI本土化:互联网梗文化如何重构人格测试

1. 项目概述:当MBTI遇上互联网梗文化最近在社交平台上刷到一个名为"SBTI测试戏仿版人格测试"的链接,出于职业敏感立刻点了进去。这个测试完美融合了正经心理学测试的框架和年轻人最爱的网络梗文化,用16种"互联网人格"替代…

2026/7/27 13:49:37
VenoBox实战案例:如何在WordPress/React项目中集成使用

VenoBox实战案例:如何在WordPress/React项目中集成使用

VenoBox实战案例:如何在WordPress/React项目中集成使用 【免费下载链接】VenoBox Responsive Vanilla JS lightbox plugin, suitable for images, videos, iFrames, inline contents 项目地址: https://gitcode.com/gh_mirrors/ve/VenoBox VenoBox是一款响应…

2026/7/27 13:49:37
TLC59116F评估模块实战:多通道LED驱动与I2C调光详解

TLC59116F评估模块实战:多通道LED驱动与I2C调光详解

1. 项目概述与核心价值如果你正在为一个需要驱动多路LED的项目选型,尤其是涉及到RGB混色、动态灯光效果或者背光应用,那么“如何高效、精确地控制每一颗LED的亮度和颜色”这个问题,大概率会让你头疼。传统的GPIO直驱方案在通道数超过几个之后…

2026/7/27 13:49:37
Ubuntu应用图标管理:从桌面环境到命令行

Ubuntu应用图标管理:从桌面环境到命令行

1. 桌面环境中的图标显示机制解析 在Ubuntu系统中,应用程序图标的显示与隐藏本质上是由桌面环境规范(Desktop Entry Specification)和应用程序菜单系统共同管理的。每个应用程序的.desktop文件(通常位于/usr/share/applications或…

2026/7/27 13:49:37
rrtools与GitHub Actions:实现R研究自动化渲染与验证

rrtools与GitHub Actions:实现R研究自动化渲染与验证

rrtools与GitHub Actions:实现R研究自动化渲染与验证 【免费下载链接】rrtools rrtools: Tools for Writing Reproducible Research in R 项目地址: https://gitcode.com/gh_mirrors/rr/rrtools rrtools是一套专为R语言设计的可重复研究工具集,能…

2026/7/27 13:49:37
微信聊天数据终极备份方案:免费工具实现个人数字记忆永久保存

微信聊天数据终极备份方案:免费工具实现个人数字记忆永久保存

微信聊天数据终极备份方案:免费工具实现个人数字记忆永久保存 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/w…

2026/7/27 13:44:37

月新闻