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

背景

前面RocketMQ系列中分享瞭如何在機器上搭建rocketmq,其中nameserverbroker都是以nohup的方式啓動。在實際運維過程當中,這種啓動存在一個比較麻煩的問題:好比機器宕機後,從新啓動機器,brokernamserver服務沒法自動隨開機拉起,還須要咱們登錄到每臺機器上去操做啓動服務。又沒有比較好的方式管理啓動腳本和中止腳本呢?html

這裏介紹一個系統管理組件:systemd。運維

咱們能夠編寫unit file,將nameserverbroker做爲一個systemd下面的一個unit,從而被systemd管理起來。而後就能夠經過systemctl start/restart/stop xxx來啓停nameserver和broker了,再經過systemctl enable xxx,能夠設置nameserver和broker開啓自行啓動。ide

廢話很少說,咱們開始編寫unit file吧。測試

nohup方式管理

1)nameserverurl

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

中止:cd /usr/local/rocketmq/bin && sh mqshutdown namesrv.net

2) brokerrest

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

中止:cd /usr/local/rocketmq/bin && sh mqshutdown brokerhtm

那將上述啓動方式改爲改寫成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

相關文章
相關標籤/搜索