前面RocketMQ系列中分享瞭如何在機器上搭建rocketmq,其中nameserver和broker都是以nohup的方式啓動。在實際運維過程當中,這種啓動存在一個比較麻煩的問題:好比機器宕機後,從新啓動機器,broker和namserver服務沒法自動隨開機拉起,還須要咱們登錄到每臺機器上去操做啓動服務。又沒有比較好的方式管理啓動腳本和中止腳本呢?html
這裏介紹一個系統管理組件:systemd。運維
咱們能夠編寫unit file,將nameserver和broker做爲一個systemd下面的一個unit,從而被systemd管理起來。而後就能夠經過systemctl start/restart/stop xxx來啓停nameserver和broker了,再經過systemctl enable xxx,能夠設置nameserver和broker開啓自行啓動。ide
廢話很少說,咱們開始編寫unit file吧。測試
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結尾的文件便可。接下來,咱們分別來編寫這兩個文件。
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
咱們嘗試運行一下:
首先要手動停掉以前的nameserver和broker,分別在nameserver和broker機器上執行以下命令:
nameserver機器:/usr/local/rocketmq/bin/mqshutdown namesrv
broker機器:/usr/local/rocketmq/bin/mqshutdown broker
而後分別在nameserver和broker機器進行啓動nameserver和broker
1)啓動nameserver
systemctl start rmq_namesrv
2)而後查看對應的狀態
systemctl status rmq_namesrv
看到以下圖,說明啓動成功。
3)再設置隨開機自動啓動
systemctl enable rmq_namesrv
4)其餘
若是想要中止nameserver,執行:systemctl stop rmq_namesrv
若是有多臺nameserver,則依次在每臺上作如上相關操做。
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