跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Linux 部署 RocketMQ:内网穿透实现公网访问

在 Linux 环境下部署 Apache RocketMQ 5.3.4 版本的完整流程,涵盖 JDK 环境准备、安装包解压、启动脚本与配置文件修改、服务启动及 systemd 开机自启设置。针对外网访问需求,详细说明了如何使用 cpolar 内网穿透工具将 RocketMQ 端口映射至公网,支持随机或固定 TCP 地址配置,从而实现跨网络远程连接消息服务。

Kubernet发布于 2026/3/30更新于 2026/7/2150 浏览
Linux 部署 RocketMQ:内网穿透实现公网访问

前提条件

首先需要安装 JDK:

java -version

下载 RocketMQ 的源码包以及运行包:

RocketMQ 建议的运行环境需要至少 12G 的内存。我们这里采用最新的 5.3.4 版本。

注意:4.x 系列版本已停止维护,不建议使用。

安装 RocketMQ

将下载后的文件上传到 /app/rocketmq:

mkdir -p rocketmq
cd rocketmq/

解压该文件:

unzip rocketmq-all-5.3.4-bin-release.zip

修改 rocketmq 文件名:

mv rocketmq-all-5.3.4-bin-release/ rocketmq

配置 RocketMQ

3.1 修改启动脚本

修改 runserver.sh 脚本:

vi /app/rocketmq/rocketmq/bin/runserver.sh

调整参数(如机器内存足够可跳过部分配置),并修改 JDK 路径:

which java

修改 runbroker.sh 脚本:

vi /app/rocketmq/rocketmq/bin/runbroker.sh

同样调整参数并确认 JDK 路径。

3.2 新增 broker.conf 配置信息

编辑 broker.conf 配置文件:

vi /app/rocketmq/rocketmq/conf/broker.conf

内容如下:

namesrvAddr = localhost:9876
brokerIP1 = localhost
3.3 启动与关闭 RocketMQ

创建日志目录:

mkdir -p /data/logs/rocketmq

启动命令:

# 启动 namesrv 服务
nohup sh /app/rocketmq/rocketmq/bin/mqnamesrv > /data/logs/rocketmq/nameserver.log &
# 启动 broker 服务
nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &

验证是否启动成功:

jps

关闭命令:

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

配置开机自启动

编写 namesrv 服务配置:

vi /etc/systemd/system/rocketmqnamesrv.service

添加如下内容:

[Unit]
Description=rocketmq - nameserver
Documentation=rocketmq_nameserver
After=network.target

[Service]
Type=simple
User=root
ExecStart=/app/rocketmq/rocketmq/bin/mqnamesrv
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

编写 broker 服务配置:

vi /etc/systemd/system/rocketmqbroker.service

添加如下内容:

[Unit]
Description=rocketmq - broker
Documentation=rocketmq_broker
After=network.target

[Service]
Type=simple
User=root
ExecStart=/app/rocketmq/rocketmq/bin/mqbroker -n localhost:9876 /app/rocketmq/rocketmq/conf/broker.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

测试启动:

systemctl daemon-reload
systemctl enable rocketmqnamesrv.service
systemctl start rocketmqnamesrv.service
systemctl status rocketmqnamesrv.service

systemctl daemon-reload
systemctl enable rocketmqbroker.service
systemctl start rocketmqbroker.service
systemctl status rocketmqbroker.service

此时 RocketMQ 已在内网 Linux 服务器上部署成功,但默认仅监听本地或局域网,外网客户端无法连接。

配置公网地址

借助 cpolar 内网穿透工具,将 RocketMQ 的关键端口安全暴露到公网。

安装 cpolar:

sudo curl https://get.cpolar.sh | sh

查看服务状态:

sudo systemctl status cpolar

登录管理界面:浏览器访问 http://<虚拟机主机 IP>:9200,使用账号登录后进入 Web 配置界面。

配置隧道:

  • 隧道名称:rocketmq
  • 协议:tcp
  • 本地地址:9876
  • 端口类型:随机临时 TCP 端口
  • 地区:China Top

创建成功后,在在线隧道列表中获取公网地址(格式示例:tcp.cpolar.top + 端口号)。

远程连接测试:

使用另一台设备启动 RocketMQ Broker,指向公网地址:

nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n <公网地址> autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &

保留固定 TCP 公网地址

如需固定公网地址,可在 cpolar Web UI 中操作:

  1. 点击'保留'按钮获取固定 TCP 地址。
  2. 进入隧道列表,找到对应隧道点击'编辑'。
  3. 端口类型选择'固定 TCP 端口',填入预留的 TCP 地址。
  4. 点击'更新'。

更新后,公网地址将不再随机变化。

总结

RocketMQ 部署本身并不复杂,核心在于解决网络隔离问题。通过基础部署配合内网穿透工具,可实现开发测试及小型生产场景下的外网访问需求。

目录

  1. 前提条件
  2. 安装 RocketMQ
  3. 配置 RocketMQ
  4. 3.1 修改启动脚本
  5. 3.2 新增 broker.conf 配置信息
  6. 3.3 启动与关闭 RocketMQ
  7. 启动 namesrv 服务
  8. 启动 broker 服务
  9. 关闭 namesrv 服务
  10. 关闭 broker 服务
  11. 配置开机自启动
  12. 配置公网地址
  13. 保留固定 TCP 公网地址
  14. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • TrendRadar 本地部署:构建个人专属 AI 热点情报系统
  • Gazebo 机器人三维物理仿真平台
  • Web 虚拟卡销售平台实现方案
  • 2026 年 3 月全球 AI 前沿动态与技术综述
  • Copilot 人工智能助手功能与版本介绍
  • 前端视角 | 从零搭建并启动若依后端(环境配置)
  • 普通 AI 与 OpenClaw 核心差异及自动化场景解析
  • Darknet 预测分类:图像数据格式转换与 GPU 加速
  • 基于 Rust 与 WebAssembly 的图片处理实战
  • 基于 Node.js 的 Claude AI 本地环境配置指南
  • FPGA 快速傅里叶变换(FFT)实现与配置
  • C++ 模板:泛型编程与代码复用
  • Glide 加载 WebP 动画的常见问题及解决方案
  • 前缀和算法详解:一维、二维及经典题目
  • 八大经典排序算法原理与代码实现
  • Java 体育课程拼班系统架构与功能设计
  • UE5 蓝图与 C++ 交互:组件、事件与数据资产
  • 前端开发基础:CSS 核心语法与常用属性详解
  • LigerUI入门帮助(API里没写的入门帮助)【不断更新】
  • AI 编程工具深度对比:Cursor、Copilot 与 Claude Code

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online