Supervisor 进程管理工具

2020-09-08 0 By admin

supervisor 是使用Python 语言开发的进程管理工具;目前只能在 unix 系统中使用。
Supervisor 进程管理工具可以对单个或者多个进程进行统一管理,如启动、重启、停止进程。更重要的作用是能在进程因为某种原因崩溃时,做到自动重启。

一、Supervisor 服务

Supervisor 服务由服务端进程 Supervisord 和 客户端 Supervisorctl 两部分组成。

1.1、Supervisor 服务安装

yum install epel-release -y
yum install -y supervisor -y
systemctl start supervisord

二、supervisord 服务端

使用 Supervisor 服务,需要启动一个 supervisord 进程;这个进程用于管理其他进程(由 Supervisor 服务管理的)。
Supervisor 服务通过配置文件的形式,向 Supervisord 进程托管其他进程(服务)。

2.1、示例:托管 ElasticSearch 服务

计划将 ElasticSearch 服务的进程,交由 Supervisor 服务进程管理;需要为 ElasticSearch 服务编写一个 Supervisord 的托管配置文档。
文档的存储目录默认为:/etc/supervisord.d ;文档为 .ini 结尾的文本文档:如 es.ini

[program:es]
command=/opt/elasticsearch-6.7.2/bin/elasticsearch
user=es

autostart=true
autorestart=true
startretries=3

stdout_logfile_maxbytes=500MB
stdout_logfile_backups = 20
stdout_logfile=/data/logs/es.log
environment=JAVA_HOME=/usr/local/src/jdk1.8.0_221

2.2、配置指令介绍

  1. directory 项目所在的位置,supervisord 会自动切换到这个目录
  2. command 项目的命令
  3. user 进程运行的用户
  4. autostart 当设置为true时,当supervisord启动时,该子进程就会自动启动
  5. autorestart 当设置为true时,子进程因为某种原因挂掉,会自动进行重启
  6. startsecs 该子进程启动多久后,才认为进程启动成功
  7. startretries 子进程尝试情动的次数,默认为3
  8. redirect_stderr 当设置为true时,子进程的标准错误输出重定向到 supervisord 后台的标准输出文件描述符
  9. stdout_logfile 子进程标准输出存放的路径
  10. stdout_logfile_maxbytes 标准输出文件达到多少后进行轮转
  11. stdout_logfile_backups 标准输出日志的备份数量
  12. priority 子进程启动的优先级,值越小启动越早
  13. environment 为进程配置变量

上面信息配置完成后,Supervisord 服务就可以管理 ElasticSearch 服务了。

三、supervisorctl 管理客户端

上面配置好 Supervisord 服务端后,平时对被托管的服务的管理操作,需要使用 supervisorctl 客户端工具。

#supervisorctl 
default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail
avail  fg        pid   remove  shutdown  status  update
clear  maintail  quit  reread  signal    stop    version

3.1、托管服务管理

  1. status 查看当前管理的子进程
  2. reload 当配置发生改变时,进行热部署
  3. restart [program_name] 重启某个子进程
  4. start [program_name] 启动某个子进程
  5. remove 移除某个托管服务
  6. update 更新配置
  7. fg 连接一个在后台运行的进程
  8. tail 查看托管服务进程的标准输出信息

3.2、Supervisord 进程管理

  1. open 链接一个远程 Supervisord 服务
  2. shutdown 关闭某个原创的 Supervisord 服务
  3. pid 获取 Supervisord 服务或托管服务的进程号
  4. signal 对 Supervisord 服务或者托管服务发送信号
  5. add 添加托管的服务进程
  6. avail 展示所有托管服务进程信息
  7. maintail 查看 Supervisord 进程的标准输出信息