Supervisor管理自己的服务

32 篇文章 3 订阅

Supervisor在CentOS7中默认自带,无需单独安装,使用方便,可以管理本机服务,远程服务,可配置显示页面,可以切割日志

 

使用前先修改配置文件/etc/supervisord.conf,打开注释及修改拉起服务配置目录及文件

1

2

3

# vim /etc/supervisord.conf

[include]

files = /etc/supervisord.d/*.conf

创建服务的配置,如backend服务

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# cat /etc/supervisord.d/lanxin_app.conf

[program:backend]

command /opt/xxx/init.d/backend start      # 程序启动方式,最好使用绝对路径

directory = /opt/xxx/init.d                  # 程序脚本运行目录

autostart = false       # 是否跟随supervisor启动而启动

user = blueset          # 启动用户

priority = 1            # 启动优先级,越小优先级越高

startsecs = 1           # 启动时长,启动多长时间此进程依然存在则认为启动正常

autorestart = unexpected    # 配合exitcodes使用,当程序的退出状态不包含在exitcodes定义的列表中时,自动拉起该服务

exitcodes = 0

stopsignal = QUIT           # QUIT 终止信号,还可以使用kill等其他linux标准信号

stopasgroup = true          # 是否停止进程组

killasgroup = true          # 同上

redirect_stderr = true

stdout_logfile = /var/log/supervisor/backend_stdout.log     # 定义程序输出日志位置(可以通过下面参数定期切割该日志)

logfile_maxbytes = 50MB     # 按大小切割日志

logfile_backups = 10        # 日志保存的份数

启动supervisor进程,最好计入到开机自启动中(可在修改完/etc/supervisord.conf后直接启动)

1

2

# supervisord -c /etc/supervisord.conf

# echo 'supervisord -c /etc/supervisord.conf' >> /etc/rc.local

启动supervisor管理的进程,如backend

1

2

# supervisorctl start backend         # 此处进程名为上方lanxin_app.conf 配置文件中[program:] 代码块后定义的进程名

# supervisorctl status      # 此命令可以查看所有管理的进程状态

大功告成,正常情况下你的服务已经被管理起来了

 

下面是supervisorctl命令管理工具的一些使用方法

1

2

3

4

5

6

7

8

9

supervisorctl status     # 查看所有的进程状态

supervisorctl update     # 更新新的配置到supervisord(不会重启原来已运行的程序)

supervisorctl reload     # 载入所有配置文件,并按新的配置启动、管理所有进程(会重启原来已运行的程序)

supervisorctl start xxx  # 启动某个进程

supervisorctl restart xxx    # 重启某个进程

supervisorctl stop xxx       # 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值

supervisorctl stop groupworker  # 重启所有属于名为groupworker这个分组的进程(start,restart同理)

supervisorctl stop all       # 停止全部进程,注:start、restart、stop都不会载入最新的配置文

supervisorctl reread         # 当一个服务由自动启动修改为手动启动时执行一下就ok

 

注意点:

  • supervisor在管理进程的时候需要将服务的daemon模式关闭(如redis,nginx,haproxy等等,都可以加配置项,放到前台运行)
  • 不能再使用服务原本的启动方式,如果被管理了,就要一直使用此supervisor自带的命令来对服务进行启停等操作
  • 蓝信自己的服务需要修改启动脚本
  1. 在启动命令前面需要调用exec,因为supervisor在管理进程的时候,始终监视第一个主进程,所以此处最好不能fock新的子进程出来,虽然上面配置中可以通过进程组的方式来管理,但是也不建议这么做
  2. 不能加nohup和&来启动服务,输出也不要重定向到指定文件,让其输出到终端,由supervisor来管理日志,此时就可以根据相关策略进行日志的切割操作
  • yum等安装的服务,不能使用systemctl start 方式来启动服务,还是上面说的command配置项后面需要使用程序完整路径来执行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值