RocketMQ系列:使用systemd管理nameserver和broker

背景

前面RocketMQ系列中分享了如何在机器上搭建rocketmq,其中nameserverbroker都是以nohup的方式启动。在实际运维过程当中,这种启动存在一个比较麻烦的问题:好比机器宕机后,从新启动机器,brokernamserver服务没法自动随开机拉起,还须要咱们登录到每台机器上去操做启动服务。又没有比较好的方式管理启动脚本和中止脚本呢?html

这里介绍一个系统管理组件:systemd。运维

咱们能够编写unit file,将nameserverbroker做为一个systemd下面的一个unit,从而被systemd管理起来。而后就能够经过systemctl start/restart/stop xxx来启停nameserver和broker了,再经过systemctl enable xxx,能够设置nameserver和broker开启自行启动。ide

废话很少说,咱们开始编写unit file吧。测试

nohup方式管理

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结尾的文件便可。接下来,咱们分别来编写这两个文件。

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

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

相关文章
相关标签/搜索