背景前面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 file1)nameserver的unit file编写: /usr/lib/systemd/system/rmq_namesrv.service
2)broker的unit file编写: /usr/lib/systemd/system/rmq_broker.service
systemctl启动服务我们尝试运行一下: 首先要手动停掉之前的nameserver和broker,分别在nameserver和broker机器上执行如下命令: nameserver机器:/usr/local/rocketmq/bin/mqshutdown namesrv broker机器:/usr/local/rocketmq/bin/mqshutdown broker 然后分别在nameserver和broker机器进行启动nameserver和broker nameserver1)启动nameserver systemctl start rmq_namesrv 2)然后查看对应的状态 systemctl status rmq_namesrv 看到如下图,说明启动成功。 3)再设置随开机自动启动 systemctl enable rmq_namesrv 4)其他 如果想要停止nameserver,执行:systemctl stop rmq_namesrv 如果有多台nameserver,则依次在每台上做如上相关操作。 broker1)启动broker systemctl start rmq_broker 2)查看对应的状态 systemctl status rmq_broker 看到如下图,说明启动成功。
3)设置随开机自动启动 systemctl enable rmq_broker 4)其它 如果想要停止broker,执行:systemctl stop rmq_broker 如果有多台broker,则依次在每台上做如上相关操作。 以上就是用systemd来管理rocketmq的进程启停操作了,希望对你有帮助,欢迎留言!
来源:https://www./content-4-802051.html |
|