背景
前面RocketMQ系列中分享瞭如何在機器上搭建rocketmq,其中nameserver和broker都是以nohup的方式啓動。在實際運維過程中,這種啓動存在一個比較麻煩的問題:比如機器宕機後,重新啓動機器,broker和namserver服務無法自動隨開機拉起,還需要我們登陸到每臺機器上去操作啓動服務。又沒有比較好的方式管理啓動腳本和停止腳本呢?
這裏介紹一個系統管理組件:systemd。
我們可以編寫unit file,將nameserver和broker作爲一個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