目錄
- 0. 引言
- 1. 下載安裝包
- 1.1 高版本直接下載安裝包
- 1.2 下載源碼包進行編譯
- 2. namesrv和broker安裝
- 2.1 安裝
- 2.2 放開服務器端口
- 2.3 測試
- 3. 配置開機自啟
- 3.1 配置namesrv開機自啟
- 3.2 配置broker開機自啟
0. 引言
之前我們針對本機電腦安裝rocketmq進行了講解,同時對rocketmq的核心原理和常用方法進行了演示,接下來我們繼續從部署架構層來講解rocketmq的可用性保障,但在搭建rocketmq集群之前,我們先對linux環境下的單機服務搭建進行講解
1. 下載安裝包
環境準備:jdk1.8(大家提前在linux上安裝jdk, 這里不再單獨說明)
1.1 高版本直接下載安裝包
1、下載安裝包
rocketmq4.9.5 版本及以上的的可以通過以下地址下載安裝包
https://dist.apache.org/repos/dist/release/rocketmq/
在服務器上通過wget指令即可下載,注意“bin”字樣的是編譯好的安裝包,“source”字樣的是源碼包,源碼包還要自己編譯才能進行安裝,編譯教程參考下文
wget https://dist.apache.org/repos/dist/release/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip
1.2 下載源碼包進行編譯
官方文檔: https://rocketmq.apache.org/zh/docs/quickStart/01quickstart/
1、對于4.9.5以下的版本,就需要我們自己下載源碼包進行編譯
這里我們以4.8.0版本為例,先下載源碼,下載地址:https://github.com/apache/rocketmq/releases?page=2
服務器上可以通過wget直接下載
wget https://github.com/apache/rocketmq/archive/refs/tags/rocketmq-all-4.8.0.zip
2、如果想在服務器上直接編譯,那需要在服務器上安裝maven
yum update
yum install maven
檢查安裝版本
mvn -v
3、maven編譯源碼,或者也可以在本機idea編譯好上傳到服務器
unzip rocketmq-all-4.8.0.zip
# 若未安裝unzip工具,可通過yum安裝
yum -y install unzipcd rocketmq-all-4.8.0/
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
cd distribution/target/rocketmq-4.8.0/rocketmq-4.8.0
4、該目錄下的rocketmq-4.8.0.tar.gz和rocketmq-4.8.0.zip就是編譯好的安裝包。我們將安裝包復制到安裝目錄下即可
2. namesrv和broker安裝
2.1 安裝
1、進入你自定義的安裝目錄
2、解壓安裝包
unzip rocketmq-4.8.0.zip
rocketmq的安裝實際上安裝啟動namesrv和broker,如果不清楚這兩者間的關系和作用的,可以查看專欄之前的文章
RocketMQ快速入門:namesrv、broker、dashboard的作用及消息發送、消費流程(三)
3、進入安裝目錄,修改namesrv啟動腳本
cd rocketmq-4.8.0
vim bin/runserver.sh
(1) 調整JAVA_HOME為自己的java安裝目錄
(2)如果需要調整namesrv占用內存的也可在此處調整
4、同樣的修改runbroker
腳本
vim bin/runbroker.sh
除了修改jdk路徑和內存大小外,因為我這里用的jdk1,8, 因此broker還需要垃圾回收器,否則會報錯Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.
在-XX:+UseG1GC
前添加-XX:+UnlockExperimentalVMOptions
即可,或者換成其他垃圾回收器,比如namesrv的CMS
5、修改broker.conf配置文件
vim conf/broker.conf
添加內容:
namesrvAddr = 192.168.244.27:9876 # 填服務器ip, 如有公網ip填公網ip
autoCreateTopicEnable = true # 開啟topic自動創建
brokerIP1 = 192.168.244.27
6、創建日志目錄
mkdir -p /data/logs/rocketmq
7、啟動namesrv
nohup sh bin/mqnamesrv > /data/logs/rocketmq/nameserver.log &
查看啟動日志
tail -500f /data/logs/rocketmq/nameserver.log
9、啟動broker
nohup sh bin/mqbroker -n localhost:9876 > /data/logs/rocketmq/broker.log &
查看啟動日志
tail -500f /data/logs/rocketmq/broker.log
出現如下字樣說明啟動成功
10、如果需要關閉服務,通過如下指令關閉即可
./bin/mqshutdown namesrv
./bin/mqshutdown broker
2.2 放開服務器端口
11、開啟端口,如果沒有打開防火墻,則不用配置
firewall-cmd --add-port=10911/tcp --permanent
firewall-cmd --add-port=10909/tcp --permanent
firewall-cmd --add-port=9876/tcp --permanent
# 開啟后重新加載
firewall-cmd --reload
2.3 測試
12、通過之前文章中書寫的消息發送代碼測試一下
消費也成功
3. 配置開機自啟
3.1 配置namesrv開機自啟
1、創建namesrv自啟腳本
vi /etc/systemd/system/namesrv.service
內容如下
[Unit]
Description=rocketmq nameserver
Documentation=namesrv
After=network.target[Service]
Type=sample
User=root
ExecStart=/data/rocketmq-4.8.0/bin/mqnamesrv > /data/logs/rocketmq/nameserver.log
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=0
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
2、加載腳本,并添加到開機項
systemctl daemon-reload
systemctl enable namesrv.service
3、啟動服務
注意:如果之前已經啟動過,先通過ps指令查詢進程id,然后通過kill -9殺掉進程后再用systemctl啟動服務
ps -ef | grep namesrv
kill -9 2298
# 啟動
systemctl start namesrv.service
# 停止
systemctl stop namesrv.service
# 查看服務狀態
systemctl status namesrv.service
3.2 配置broker開機自啟
創建自啟腳本
vi /etc/systemd/system/broker.service
腳本內容
[Unit]
Description=rocketmq broker
Documentation=broker
After=network.target[Service]
Type=sample
User=root
ExecStart=/data/rocketmq-4.8.0/bin/mqbroker -n localhost:9876 /data/rocketmq-4.8.0/conf/broker.conf > /data/logs/rocketmq/broker.log
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=0
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
2、加載腳本,并添加到開機項
systemctl daemon-reload
systemctl enable broker.service
3、啟動服務
注意:如果之前已經啟動過,先通過ps指令查詢進程id,然后通過kill -9殺掉進程后再用systemctl啟動服務
# 啟動
systemctl start broker.service
# 停止
systemctl stop broker.service
# 查看服務狀態
systemctl status broker.service