背景
前面RocketMQ系列中分享了如何在机器上搭建rocketmq,其中nameserver和broker都是以nohup的方式启动。在实际运维过程中,这种启动存在一个比较麻烦的问题:比如机器宕机后,重新启动机器,broker和namserver服务无法自动随开机拉起,还需要我们登陆到每台机器上去操作启动服务。又没有比较好的方式管理启动脚本和停止脚本呢?
我们可以编写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
2)查看对应的状态
看到如下图,说明启动成功。
3)设置随开机自动启动
4)其它
如果想要停止broker,执行:systemctl stop rmq_broker
如果有多台broker,则依次在每台上做如上相关操作。
以上就是用systemd来管理rocketmq的进程启停操作了,希望对你有帮助,欢迎留言!
博主:测试生财
座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。
csdn:https://blog.csdn.net/ccgshigao