Linux 部署 RocketMQ 5.5.0版本

在构建现代化的微服务或后端架构时,一个稳定可靠的消息中间件是解耦服务、实现异步通信的关键。Apache RocketMQ 作为一款高性能、高可用的分布式消息和流处理平台,是众多开发者的首选。然而,从本地部署到实现安全的公网访问,中间的网络配置环节往往让开发者望而却步。本文将手把手带你完成在 Linux 系统上部署 RocketMQ 5.x 的全过程。

一、部署准备:环境与资源规划


在开始部署之前,充分的准备工作能避免后续的许多麻烦。首先,确保你的 Linux 服务器满足以下基础条件:

  • 操作系统: 主流的 Linux 发行版均可,如 CentOS 7+/Ubuntu 20.04+。

  • Java 环境: RocketMQ 基于 Java 开发,需要预先安装 JDK 8 或更高版本。你可以通过以下命令检查:

java -version

如果未安装,请先安装 OpenJDK 或 Oracle JDK。其次,内存资源是关键。RocketMQ 的 NameServer 和 Broker 进程对内存有一定要求,官方建议生产环境预留至少 12GB 内存。对于开发测试,适当调整 JVM 参数后,4-8GB 内存也可运行。

接下来是版本选择。Apache RocketMQ 4.x 系列已停止维护,社区主推 5.x 系列,它引入了新的轻量级 SDK、消息轨迹、多协议支持等特性。本文将以最新的稳定版 5.5.0 为例进行部署。请前往 Apache 官网或镜像站下载二进制发布包。

二、RocketMQ 核心组件安装与配置

我们将按照标准路径进行安装,通常将 RocketMQ 部署在 /app/opt 目录下。

  1. 上传与解压: 将下载的压缩包上传至服务器目标目录,例如 /app/rocketmq

mkdir -p /app/rocketmq
cd /app/rocketmq
wget https://dist.apache.org/repos/dist/release/rocketmq/5.5.0/rocketmq-all-5.5.0-bin-release.zip
ln -s /app/rocketmq/rocketmq-all-5.5.0-bin-release /app/rocketmq/rocketmq5.5.0

添加rocketmq的环境变量

echo 'export ROCKETMQ_HOME=/app/rocketmq/rocketmq5.5.0
export PATH=$ROCKETMQ_HOME/bin:$PATH' >> /etc/profile
source /etc/profile

2. 关键配置调整: RocketMQ 的启动脚本默认预设了较大的 JVM 堆内存,如果服务器资源有限,需要手动调整,以避免启动失败。

  • 修改 NameServer 启动脚本 (runserver.sh): 主要调整 JAVA_OPT 中的 -Xms, -Xmx, -Xmn 参数。同时,务必确认 JAVA_HOME 变量指向正确的 JDK 安装路径。

vi /app/rocketmq/rocketmq5.5.0/bin/runserver.sh
which java

  • 修改 Broker 启动脚本 (runbroker.sh): 同样调整内存参数和 JAVA_HOME

vim  /app/rocketmq/rocketmq5.5.0/bin/runbroker.sh

3. 配置 Broker 配置文件: 我们需要创建一个自定义的 broker.conf 文件。

vi /app/rocketmq/rocketmq/conf/broker.conf
namesrvAddr = 10.20.30.18:9876
brokerIP1 = 10.20.30.18

三、服务启动、验证与系统集成

配置完成后,即可启动 RocketMQ 服务。建议先创建统一的日志目录。

mkdir /var/log/rocketmq

启动与验证流程:

  1. 启动 NameServer: NameServer 是轻量级的服务发现组件,需要首先启动。

#启动namesrv服务
nohup sh /app/rocketmq/rocketmq5.5.0/bin/mqnamesrv > /var/log/rocketmq/nameserver.log 2>&1 &
#启动broker服务
nohup sh /app/rocketmq/rocketmq5.5.0/bin/mqbroker -n 0.0.0.0:9876 autoCreateTopicEnable=true >/var/log/rocketmq/broker.log 2>&1 &
  1. 启动 Broker: 指定刚才创建的配置文件启动 Broker。

使用 jps 命令或查看日志可以验证服务是否成功启动。

jps

如果需要关闭服务,可以使用提供的脚本:

#关闭namesrv服务
/app/rocketmq/rocketmq5.5.0/bin/mqshutdown namesrv
#关闭broker服务
/app/rocketmq/rocketmq5.5.0/bin/mqshutdown broker

3. 配置系统服务(开机自启): 为了生产环境稳定性,建议将 RocketMQ 注册为 systemd 服务。

  • 创建 NameServer 服务文件。

vim /etc/systemd/system/mqnamesrv.service

[Unit]
Description=RocketMQ Nameserver
After=network.target

[Service]
Type=simple
Environment=JAVA_OPT_EXT=-Duser.home=/app/rocketmq/rocketmq5.5.0
ExecStart=/app/rocketmq/rocketmq5.5.0/bin/mqnamesrv
ExecStop=/app/rocketmq/rocketmq5.5.0/bin/mqshutdown namesrv 
Restart=on-failure
RestartSec=30s

[Install]
WantedBy=multi-user.target

(2) 启动 NameServer 服务

#加载配置文件
systemctl daemon-reload

#启动
systemctl start mqnamesrv

#设置开机自启
systemctl enable mqnamesrv

  • 创建 Broker 服务文件。

vim /etc/systemd/system/mqbroker.service 

[Unit]
Description=RocketMQ Broker And Proxy
After=network.target

[Service]
Type=simple
Environment=JAVA_OPT_EXT=-Duser.home=/app/rocketmq/rocketmq5.5.0
ExecStart=/app/rocketmq/rocketmq5.5.0/bin/mqbroker -n localhost:9876 -c /app/rocketmq/rocketmq5.5.0/conf/broker.conf --enable-proxy
ExecStop=/app/rocketmq/rocketmq5.5.0/bin/mqshutdown broker
Restart=on-failure
RestartSec=30s

[Install]
WantedBy=multi-user.target

启动 broker + proxy 服务

#加载配置文件
systemctl daemon-reload

#启动
systemctl start mqbroker

#设置开机自启
systemctl enable mqbroker

RocketMQ Dashboard部署

Jar包方式部署

需要安装maven

RocketMQ源代码中并没有提供Dashboard,但是有一个Rocket的社区扩展项目中提供了一个Dashboard

源码地址:apache/rocketmq-dashboard

下载并解压,切换至源码目录 rocketmq-dashboard-master/


wget https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-2.0.0.zip
unzip rocketmq-dashboard-2.0.0.zip
cd rocketmq-dashboard-rocketmq-dashboard-2.0.0

下载下来后,进入其中的rocket-console目录,使用maven进行编译,maven需要自行安装

mvn clean package -Dmaven.test.skip=true

编译完成

编译成功

编译完成后,获取target下的jar包,就可以直接执行,在rocketmq-dashboard-rocketmq-dashboard-2.0.0/target目录下

前台运行测试是否启动

java -Xms256m -Xmx256m -jar rocketmq-dashboard-2.0.0.jar --server.port=8082

Dashboard 访问

使用浏览器输入 http://<服务器IP>:8082 ,即可打开页面。

创建systemd启动文件

vim /etc/systemd/system/mqdashboard.service
[Unit]
Description=RocketMQ Dashboard
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -Xms256m -Xmx256m -jar /app/rocketmq/rocketmq5.5.0/rocketmq-dashboard-2.0.0.jar --server.port=8082
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

启动 Dashboard 服务

#加载配置文件
systemctl daemon-reload

#启动
systemctl start mqdashboard

#设置开机自启
systemctl enable mqdashboard

Comment