zoukankan      html  css  js  c++  java
  • RocketMQ系列:使用systemd管理nameserver和broker

    背景

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

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

    我们可以编写unit file,将nameserverbroker作为一个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

    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

  • 相关阅读:
    Git修改注释
    数组和切片的区别
    SpringBoot启动报:Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
    eclipse中web.xml报:The content of element type "web-app" must match "(icon?,display- name?,
    eclipse错误: 在类xxx中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application
    idea Cannot resolve method ‘setAttribute(java.lang.String, java.lang.String)/不能使用pageContext.setAttribute()
    解决Nginx启动报nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    数据仓库开发规范
    详解会话技术cookie、session和token
    Requests爬虫包及解析工具 xpath、正则、Beautiful Soup
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/14203380.html
Copyright © 2011-2022 走看看