RocketMQ系列:使用systemd管理nameserver和broker

測試生財發表於2020-12-29

背景

前面RocketMQ系列中分享瞭如何在機器上搭建rocketmq,其中nameserverbroker都是以nohup的方式啟動。在實際運維過程中,這種啟動存在一個比較麻煩的問題:比如機器當機後,重新啟動機器,brokernamserver服務無法自動隨開機拉起,還需要我們登陸到每臺機器上去操作啟動服務。又沒有比較好的方式管理啟動指令碼和停止指令碼呢?

這裡介紹一個系統管理元件:systemd。

我們可以編寫unit file,將nameserverbroker作為一個systemd下面的一個unit,從而被systemd管理起來。然後就可以通過systemctl start/restart/stop xxx來啟停nameserver和broker了,再通過systemctl enable xxx,可以設定nameserver和broker開啟自行啟動。

廢話不多說,我們開始編寫unit file吧。

nohup方式管理

1)nameserver

啟動:cd /usr/local/rocketmq/bin &&  nohup ./mqnamesrv -c namesrv.properties &

停止:cd /usr/local/rocketmq/bin && sh mqshutdown namesrv

2) broker

啟動:cd /usr/local/rocketmq/bin && nohup sh mqbroker -c rmq-broker.conf &

停止:cd /usr/local/rocketmq/bin && sh mqshutdown broker

那將上述啟動方式改成改寫成unit file呢?

在/usr/lib/systemd/system這個路徑下編寫一個.service結尾的檔案即可。接下來,我們分別來編寫這兩個檔案。

system的unit file

1)nameserver的unit file編寫: /usr/lib/systemd/system/rmq_namesrv.service

[Unit]
Description=rmq
After=network.target

[Service]

#這裡Type一定要寫simple
Type=simple  

#ExecStart和ExecStop分別在systemctl start和systemctl stop時候調動
ExecStart=/usr/local/rocketmq/bin/mqnamesrv -c /usr/local/rocketmq/bin/namesrv.properties
ExecStop=/usr/local/rocketmq/bin/mqshutdown namesrv

[Install]
WantedBy=multi-user.target

2)broker的unit file編寫: /usr/lib/systemd/system/rmq_broker.service

[Unit]
Description=rmq
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/bin/rmq-broker.conf
ExecStop=/usr/local/rocketmq/bin/mqshutdown broker

[Install]
WantedBy=multi-user.target

systemctl啟動服務

我們嘗試執行一下:

首先要手動停掉之前的nameserver和broker,分別在nameserver和broker機器上執行如下命令: 

nameserver機器:/usr/local/rocketmq/bin/mqshutdown namesrv

broker機器:/usr/local/rocketmq/bin/mqshutdown broker

然後分別在nameserver和broker機器進行啟動nameserver和broker

nameserver

1)啟動nameserver

systemctl start rmq_namesrv

2)然後檢視對應的狀態

systemctl status rmq_namesrv

看到如下圖,說明啟動成功。

3)再設定隨開機自動啟動

systemctl enable rmq_namesrv

4)其他

如果想要停止nameserver,執行:systemctl stop rmq_namesrv

如果有多臺nameserver,則依次在每臺上做如上相關操作。

broker

1)啟動broker

systemctl start rmq_broker

2)檢視對應的狀態

systemctl status rmq_broker

看到如下圖,說明啟動成功。

3)設定隨開機自動啟動

systemctl enable rmq_broker

4)其它

如果想要停止broker,執行:systemctl stop rmq_broker

如果有多臺broker,則依次在每臺上做如上相關操作。

以上就是用systemd來管理rocketmq的程式啟停操作了,希望對你有幫助,歡迎留言!

 

博主:測試生財

座右銘:專注測試與自動化,致力提高研發效能;通過測試精進完成原始積累,通過讀書理財奔向財務自由。

csdn:https://blog.csdn.net/ccgshigao

部落格園:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

 

相關文章