概述
在 Linux 服务器上部署 RocketMQ 时,常遇到内网测试正常但外网无法连接的问题。要么申请公网 IP,要么折腾端口映射,费时费力。本文分享一套从基础部署到内网穿透的完整方案,让 RocketMQ 服务快速支持远程访问。
1. 前提条件
JDK 环境:确保已安装 JDK。
java -version
资源要求:RocketMQ 建议运行环境至少 12G 内存。
版本选择:推荐使用 5.3.4 版本(4.x 系列已停止维护)。
2. 安装 RocketMQ
将下载后的文件上传至 /app/rocketmq 目录并解压:
mkdir -p /app/rocketmq
cd /app/rocketmq/unzip rocketmq-all-5.3.4-bin-release.zip
重命名目录以简化路径:
mv rocketmq-all-5.3.4-bin-release/ rocketmq
3. 配置 RocketMQ
3.1 修改启动脚本
编辑 runserver.sh 和 runbroker.sh,根据实际机器内存调整 JVM 参数。务必将 JDK 路径修改为当前环境实际路径:
which java
3.2 新增 Broker 配置
编辑 conf/broker.conf:
namesrvAddr = localhost:9876
brokerIP1 = localhost
3.3 启动与验证
创建日志目录:
mkdir -p /data/logs/rocketmq
启动 NameServer 和 Broker:
nohup sh /app/rocketmq/rocketmq/bin/mqnamesrv > /data/logs/rocketmq/nameserver.log &
nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &
使用 jps 命令验证进程是否存活。关闭服务可使用 mqshutdown 脚本。
4. 配置开机自启
编写 Systemd 服务文件,将 Type=sample 修正为 simple:
NameServer 服务 (/etc/systemd/system/rocketmqnamesrv.service):
[Unit]
Description=rocketmq-nameserver
=network.target
=simple
=root
=/app/rocketmq/rocketmq/bin/mqnamesrv
=-failure
=
=multi-user.target


