Linux 部署 RocketMQ 实操:从内网到公网的完整落地心得

前言

作为日常和消息中间件打交道的开发人员,RocketMQ 的高效和稳定性一直是我青睐它的原因,但最初部署时却踩了不少坑 ------ 本地调试好好的,外网想连却被网络隔离卡住,要么得申请公网 IP,要么折腾复杂的端口映射,费时间还容易出问题。

用 RocketMQ 这段时间,我发现它最香的点在于轻量且适配性强,单机部署就能满足开发测试甚至轻量生产需求,5.x 版本相比停更的 4.x 也更稳定。不过真正让我觉得 "用得顺手" 的,是找到了解决外网访问的便捷方法,不用再受限于内网环境,异地调试、和同事协作测试都变得特别顺畅。

好东西当然要和大家分享,下面就把我亲测可行的 Linux 环境下 RocketMQ 完整部署流程,以及如何轻松实现外网访问的方法整理出来,从基础配置到公网穿透,一步一步讲清楚。

1.前提条件

首先需要安装jdk

shell 复制代码
java -version

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

RocketMQ建议的运行环境需要至少12G的内存

关于RocketMQ的版本: 我们这里采用最新的5.3.4版本

这里需要小伙伴注意一下,4.x的系列版本已经停止了维护。这意味着目前已经不建议使用4.x的版本了。

2.安装RocketMQ

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

shell 复制代码
mkdir -p rocketmq
cd rocketmq/

解压该文件:

shell 复制代码
 unzip rocketmq-all-5.3.4-bin-release.zip

修改rocketmq文件名:

shell 复制代码
mv rocketmq-all-5.3.4-bin-release/ rocketmq

3.配置RocketMQ

3.1修改runserver.sh和runbroker.sh启动脚本

修改runserver.sh脚本:

shell 复制代码
vi /app/rocketmq/rocketmq/bin/runserver.sh

将原来的参数就改为红框内参数,如果你的机器内存够大这一步可以不配置:

jdk路径必须修改为自己的jdk路径:

shell 复制代码
which java

修改runbroker.sh脚本:

shell 复制代码
vi /app/rocketmq/rocketmq/bin/runbroker.sh

将原来的参数就改为红框内参数,如果你的机器内存够大这一步可以不配置:

jdk路径必须修改为自己的jdk路径:

3.2新增broker.conf配置信息

编辑broker.conf配置文件:

shell 复制代码
vi /app/rocketmq/rocketmq/conf/broker.conf
namesrvAddr = localhost:9876
brokerIP1 = localhost

3.3启动关闭rocketmq

创建日志目录:

shell 复制代码
mkdir -p /data/logs/rocketmq

启动命令:

shell 复制代码
#启动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 &

验证是否启动成功:

shell 复制代码
jps

关闭命令:

shell 复制代码
#关闭namesrv服务
/app/rocketmq/rocketmq/bin/mqshutdown namesrv
#关闭broker服务
/app/rocketmq/rocketmq/bin/mqshutdown broker

4.配置开机自启动

编写namesrv服务:

shell 复制代码
#创建配置文件
vi /etc/systemd/system/rocketmqnamesrv.service
#添加如下内容
[Unit]
Description=rocketmq - nameserver
Documentation=rocketmq_nameserver
After=network.target

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

[Install]
WantedBy=multi-user.target

编写broker服务:

shell 复制代码
#创建配置文件
vi /etc/systemd/system/rocketmqbroker.service
#添加如下内容
[Unit]
Description=rocketmq - broker
Documentation=rocketmq_broker
After=network.target

[Service]
Type=sample
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=0
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

此时rocketmq是关闭状态,使用systemctl 方式启动测试:

shell 复制代码
#依次执行启动namesrv
systemctl daemon-reload
systemctl enable rocketmqnamesrv.service
systemctl start rocketmqnamesrv.service
systemctl status rocketmqnamesrv.service
#依次执行启动broker
systemctl daemon-reload
systemctl enable rocketmqbroker.service
systemctl start rocketmqbroker.service
systemctl status rocketmqbroker.service

你已在内网Linux服务器上部署了Apache RocketMQ,执行mqnamesrv和mqbroker成功启动了消息服务。但默认情况下,这些服务仅监听本地或局域网,外网客户端无法连接------即使你只是想从公司网络外发送一条测试消息,也会因网络隔离而失败。

此时,无需申请公网IP或配置复杂端口映射,只需借助cpolar内网穿透工具,将RocketMQ的关键端口安全暴露到公网。一旦隧道建立,任何外网设备都能像在内网一样,直接连接并使用你刚刚启动的RocketMQ服务。

5.安装cpolar内网穿透工具

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

shell 复制代码
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

6.配置公网地址

通过配置,你可以在本地 WSL 或 Linux 系统上运行 SSH 服务,并通过 Cpolar 将其映射到公网,从而实现从任意设备远程连接开发环境的目的。

  • 隧道名称:可自定义,本例使用了:rocketmq,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:9876
  • 端口类型:随机临时TCP端口
  • 地区:China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在终端中访问即可。

  • tcp 表示使用的协议类型
  • 2.tcp.cpolar.top是 Cpolar 提供的域名
  • 11242是随机分配的公网端口号

现在我们用另一台虚拟机启动一下我们的rocketmq:

shell 复制代码
nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n 2.tcp.cpolar.top:11242 autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &

如图可见 启动成功:

7.保留固定TCP公网地址

使用cpolar为其配置TCP地址,该地址为固定地址,不会随机变化。

选择区域和描述:有一个下拉菜单,当前选择的是"China Top"。

右侧输入框,用于填写描述信息。

保留按钮:在右侧有一个橙色的"保留"按钮,点击该按钮可以保留所选的TCP地址。

列表中显示了一条已保留的TCP地址记录。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道rocketmq,点击右侧的编辑

修改隧道信息,将保留成功的TCP端口配置到隧道中。

  • 端口类型:选择固定TCP端口
  • 预留的TCP地址:填写保留成功的TCP地址

点击更新

创建完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的TCP地址。

这样我们的地址就永远不会发生变化啦!

总结

其实部署 RocketMQ 并没有想象中复杂,这篇实操指南从前提条件、安装配置,到启动验证、开机自启,再到用内网穿透解决外网访问难题,把单机版 RocketMQ 从 "能跑起来" 到 "用得方便" 的全流程都讲透了,避开了内存配置、端口访问这些常见坑。

希望这份干货能帮到正在折腾 RocketMQ 的你,少走弯路,几分钟就能把服务搭好、用起来。如果实操中遇到任何问题,咱们评论区一起交流,祝大家都能把 RocketMQ 用得顺风顺水~

相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 天前
Linux 11 动态监控指令top
linux