前面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