Linux部署RocketMQ的實(shí)操流程
前言
做中間件開發(fā)的朋友應(yīng)該都有過這樣的經(jīng)歷:在 Linux 服務(wù)器上搭好了 RocketMQ,內(nèi)網(wǎng)測(cè)試一切正常,可外網(wǎng)想連的時(shí)候卻被網(wǎng)絡(luò)隔離卡得死死的。要么得申請(qǐng)公網(wǎng) IP,要么折騰端口映射,費(fèi)時(shí)又費(fèi)力。最近我踩遍了坑,終于找到了一套極簡(jiǎn)的部署 + 外網(wǎng)訪問方案,不用復(fù)雜配置,幾分鐘就能讓你的 RocketMQ 從內(nèi)網(wǎng)走向公網(wǎng),今天就把這套實(shí)操流程全部分享出來。
消息隊(duì)列不再遙遠(yuǎn)——在Linux上,RocketMQ一跑就通。
1.前提條件
首先需要安裝jdk:
java -version

首先下載RocketMQ的源碼包以及運(yùn)行包:
RocketMQ建議的運(yùn)行環(huán)境需要至少12G的內(nèi)存。
關(guān)于RocketMQ的版本: 我們這里采用最新的5.3.4版本

這里需要小伙伴注意一下,4.x的系列版本已經(jīng)停止了維護(hù)。這意味著目前已經(jīng)不建議使用4.x的版本了。
2.安裝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

3.配置RocketMQ
3.1修改runserver.sh和runbroker.sh啟動(dòng)腳本
修改runserver.sh腳本:
vi /app/rocketmq/rocketmq/bin/runserver.sh
將原來的參數(shù)就改為紅框內(nèi)參數(shù),如果你的機(jī)器內(nèi)存夠大這一步可以不配置:

jdk路徑必須修改為自己的jdk路徑:
which java


修改runbroker.sh腳本:
vi /app/rocketmq/rocketmq/bin/runbroker.sh
將原來的參數(shù)就改為紅框內(nèi)參數(shù),如果你的機(jī)器內(nèi)存夠大這一步可以不配置:

jdk路徑必須修改為自己的jdk路徑:

3.2新增broker.conf配置信息
編輯broker.conf配置文件:
vi /app/rocketmq/rocketmq/conf/broker.conf namesrvAddr = localhost:9876 brokerIP1 = localhost

3.3啟動(dòng)關(guān)閉rocketmq
創(chuàng)建日志目錄:
mkdir -p /data/logs/rocketmq

啟動(dòng)命令:
#啟動(dòng)namesrv服務(wù) nohup sh /app/rocketmq/rocketmq/bin/mqnamesrv > /data/logs/rocketmq/nameserver.log & #啟動(dòng)broker服務(wù) nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &

驗(yàn)證是否啟動(dòng)成功:
jps

關(guān)閉命令:
#關(guān)閉namesrv服務(wù) /app/rocketmq/rocketmq/bin/mqshutdown namesrv #關(guān)閉broker服務(wù) /app/rocketmq/rocketmq/bin/mqshutdown broker

4.配置開機(jī)自啟動(dòng)
編寫namesrv服務(wù):
#創(chuàng)建配置文件 vi /etc/systemd/system/rocketmqnamesrv.service #添加如下內(nèi)容 [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服務(wù):
#創(chuàng)建配置文件 vi /etc/systemd/system/rocketmqbroker.service #添加如下內(nèi)容 [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
此時(shí)rocketmq是關(guān)閉狀態(tài),使用systemctl 方式啟動(dòng)測(cè)試:
#依次執(zhí)行啟動(dòng)namesrv systemctl daemon-reload systemctl enable rocketmqnamesrv.service systemctl start rocketmqnamesrv.service systemctl status rocketmqnamesrv.service #依次執(zhí)行啟動(dòng)broker systemctl daemon-reload systemctl enable rocketmqbroker.service systemctl start rocketmqbroker.service systemctl status rocketmqbroker.service
你已在內(nèi)網(wǎng)Linux服務(wù)器上部署了Apache RocketMQ,執(zhí)行mqnamesrv和mqbroker成功啟動(dòng)了消息服務(wù)。但默認(rèn)情況下,這些服務(wù)僅監(jiān)聽本地或局域網(wǎng),外網(wǎng)客戶端無法連接——即使你只是想從公司網(wǎng)絡(luò)外發(fā)送一條測(cè)試消息,也會(huì)因網(wǎng)絡(luò)隔離而失敗。
此時(shí),無需申請(qǐng)公網(wǎng)IP或配置復(fù)雜端口映射,只需借助cpolar內(nèi)網(wǎng)穿透工具,將RocketMQ的關(guān)鍵端口安全暴露到公網(wǎng)。一旦隧道建立,任何外網(wǎng)設(shè)備都能像在內(nèi)網(wǎng)一樣,直接連接并使用你剛剛啟動(dòng)的RocketMQ服務(wù)。
5.安裝cpolar內(nèi)網(wǎng)穿透工具
cpolar 可以將你本地電腦中的服務(wù)(如 SSH、Web、數(shù)據(jù)庫)映射到公網(wǎng)。即使你在家里或外出時(shí),也可以通過公網(wǎng)地址連接回本地運(yùn)行的開發(fā)環(huán)境。
以下是安裝cpolar步驟:
使用一鍵腳本安裝命令:
sudo curl https://get.cpolar.sh | sh

安裝完成后,執(zhí)行下方命令查看cpolar服務(wù)狀態(tài):(如圖所示即為正常啟動(dòng))
sudo systemctl status cpolar

Cpolar安裝和成功啟動(dòng)服務(wù)后,在瀏覽器上輸入虛擬機(jī)主機(jī)IP加9200端口即:【ip:9200】訪問Cpolar管理界面,使用Cpolar官網(wǎng)注冊(cè)的賬號(hào)登錄,登錄后即可看到cpolar web 配置界面,接下來在web 界面配置即可:
打開瀏覽器訪問本地9200端口,使用cpolar賬戶密碼登錄即可,登錄后即可對(duì)隧道進(jìn)行管理。

6.配置公網(wǎng)地址
通過配置,你可以在本地 WSL 或 Linux 系統(tǒng)上運(yùn)行 SSH 服務(wù),并通過 Cpolar 將其映射到公網(wǎng),從而實(shí)現(xiàn)從任意設(shè)備遠(yuǎn)程連接開發(fā)環(huán)境的目的。
- 隧道名稱:可自定義,本例使用了:rocketmq,注意不要與已有的隧道名稱重復(fù)
- 協(xié)議:tcp
- 本地地址:9876
- 端口類型:隨機(jī)臨時(shí)TCP端口
- 地區(qū):China Top

創(chuàng)建成功后,打開左側(cè)在線隧道列表,可以看到剛剛通過創(chuàng)建隧道生成了公網(wǎng)地址,接下來就可以在其他電腦或者移動(dòng)端設(shè)備(異地)上,使用任意一個(gè)地址在終端中訪問即可。
- tcp 表示使用的協(xié)議類型
- 2.tcp.cpolar.top是 Cpolar 提供的域名
- 11242是隨機(jī)分配的公網(wǎng)端口號(hào)

現(xiàn)在我們用另一臺(tái)虛擬機(jī)啟動(dòng)一下我們的rocketmq:
nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n 2.tcp.cpolar.top:11242 autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &
如圖可見 啟動(dòng)成功:

7.保留固定TCP公網(wǎng)地址
使用cpolar為其配置TCP地址,該地址為固定地址,不會(huì)隨機(jī)變化。

選擇區(qū)域和描述:有一個(gè)下拉菜單,當(dāng)前選擇的是“China Top”。
右側(cè)輸入框,用于填寫描述信息。
保留按鈕:在右側(cè)有一個(gè)橙色的“保留”按鈕,點(diǎn)擊該按鈕可以保留所選的TCP地址。
列表中顯示了一條已保留的TCP地址記錄。

登錄cpolar web UI管理界面,點(diǎn)擊左側(cè)儀表盤的隧道管理——隧道列表,找到所要配置的隧道rocketmq,點(diǎn)擊右側(cè)的編輯。

修改隧道信息,將保留成功的TCP端口配置到隧道中。
- 端口類型:選擇固定TCP端口
- 預(yù)留的TCP地址:填寫保留成功的TCP地址
點(diǎn)擊更新。

創(chuàng)建完成后,打開在線隧道列表,此時(shí)可以看到隨機(jī)的公網(wǎng)地址已經(jīng)發(fā)生變化,地址名稱也變成了保留和固定的TCP地址。

這樣我們的地址就永遠(yuǎn)不會(huì)發(fā)生變化啦!
總結(jié)
其實(shí) RocketMQ 的部署本身并不復(fù)雜,難的是解決網(wǎng)絡(luò)隔離的痛點(diǎn)。這套從基礎(chǔ)部署到內(nèi)網(wǎng)穿透的完整流程,親測(cè)在開發(fā)測(cè)試、小型生產(chǎn)場(chǎng)景下都很好用。如果你也在為 RocketMQ 的外網(wǎng)訪問發(fā)愁,不妨試試這個(gè)方法,有任何實(shí)操中的問題,評(píng)論區(qū)咱們一起聊聊。
以上就是Linux部署RocketMQ的實(shí)操流程的詳細(xì)內(nèi)容,更多關(guān)于Linux部署RocketMQ的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Windows和Linux系統(tǒng)下校驗(yàn)MD5值的方法
MD5(Message-Digest Algorithm 5)是一種廣泛使用的哈希算法,可用于驗(yàn)證文件完整性,通過對(duì)比文件的MD5哈希值,可確保文件未被篡改或損壞,以下是兩種操作系統(tǒng)的具體操作方法,需要的朋友可以參考下2025-04-04
Ubuntu報(bào)“無法解析域名cn.archive.ubuntu.com”問題的解決辦法
這篇文章主要介紹了Ubuntu報(bào)“無法解析域名cn.archive.ubuntu.com”問題的解決辦法,主要步驟包括檢查網(wǎng)絡(luò)連接、更改DNS設(shè)置、更改軟件源、重新啟動(dòng)網(wǎng)絡(luò)服務(wù)以及提供其他解決方案,需要的朋友可以參考下2024-12-12
VIM實(shí)現(xiàn)文件快速跳轉(zhuǎn)插件詳解
這篇文章主要給大家介紹了關(guān)于VIM實(shí)現(xiàn)文件快速跳轉(zhuǎn)插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vim具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
一條命令讓你明白shell中read命令的常用參數(shù)
今天小編就為大家分享一篇關(guān)于一條命令讓你明白shell中read命令的常用參數(shù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
linux命令詳解date使用方法(計(jì)算母親節(jié)和父親節(jié)日期腳本示例)
date命令可以用來顯示和修改系統(tǒng)日期時(shí)間,本文對(duì)其做了詳細(xì)說明,最近提供計(jì)算指定年份的母親節(jié)和父親節(jié)的日期腳本示例,大家參考使用吧2013-12-12
Linux關(guān)機(jī)時(shí)執(zhí)行指定腳本功能實(shí)現(xiàn)
本篇文章給大家分享了Linux關(guān)機(jī)時(shí)執(zhí)行指定腳本功能的實(shí)現(xiàn)詳解,對(duì)此有需要的朋友跟著小編一起學(xué)習(xí)下。2018-03-03

