supervisor服务简介

一、Supervisord服务简介

在类Unix系统中管理控制大量进程。Supervisor使用python开发。

Supervisor的服务器端称为supervisord,主要负责在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态,其管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。

Supervisor的客户端称为supervisorctl,它提供了一个类shell的接口(即命令行)来使用supervisord服务端提供的功能。通过supervisorctl,用户可以连接到supervisord服务器进程,获得服务器进程控制的子进程的状态,启动和停止子进程,获得正在运行的进程列表。客户端通过Unix域套接字或者TCP套接字与服务端进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务器位于同一台机器上时,客户端与服务器共用同一个配置文件/etc/supervisord.conf,通过不同标签来区分两者的配置。

Supervisor可以运行在大多数Unix系统上,但不支持在Windows系统上运行。

Supervisor需要Python2.4及以上版本,但任何Python 3版本都不支持。

二、Supervisord部署安装

1、检查服务器是否有python2.X环境,如果没有,进行python环境配置(如果已有python环境,可越过此步骤)

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz

tar -zxvf Python-2.7.9.tgz

cd Python-2.7.9

./configure --prefix=/usr/local/python-2.7.9

make && make install

2、下载安装包

wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz

3、安装依赖

yum install python-setuptools-devel

4、解压并安装

tar zxvf supervisor-3.1.3.tar.gz

cd supervisor-3.1.3

python setup.py install

三、Supervisord配置详解

supervisord.conf(名称可自定义)

参数

作用

command

启动程序使用的命令,可以是绝对路径或者相对路径

process_name

一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s

numprocs

Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1

numprocs_start

一个int偏移值,当启动实例的时候用来计算numprocs的值

priority

权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999

autostart

如果设置为true,当supervisord启动的时候,进程会自动重启。

autorestart

值可以是false、true、unexpected。false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。

startsecs

程序启动后等待多长时间后才认为程序启动成功

startretries

supervisord尝试启动一个程序时尝试的次数。默认是3

exitcodes

一个预期的退出返回码,默认是0,2。

stopsignal

当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。

stopwaitsecs

在操作系统给supervisord发送SIGCHILD信号时等待的时间

stopasgroup

如果设置为true,则会使supervisor发送停止信号到整个进程组

killasgroup

如果设置为true,则在给程序发送SIGKILL信号的时候,会发送到整个进程组,它的子进程也会受到影响。

user

如果supervisord以root运行,则会使用这个设置用户启动子程序

redirect_stderr

如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符。

- stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。

stdout_logfile_maxbytes

标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小

stdout_logfile_backups

标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份

stdout_capture_maxbytes

当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB

stdout_events_enabled

如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发

stderr_logfile

把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true

stderr_logfile_maxbytes

错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小

stderr_logfile_backups

错误日志轮转备份的数量,默认是10,如果设置为0,则不备份

stderr_capture_maxbytes

当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB

stderr_events_enabled

如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发

environment

一个k/v对的list列表

directory

supervisord在生成子进程的时候会切换到该目录

umask

设置进程的umask

serverurl

是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url

 

四、Supervisord常用命令

命令

作用

supervisorctl help

查看supervisorctl支持的命令

supervisorctl status

查看当前运行的进程列表

supervisorctl update

更新新的配置到supervisord

(不会重启原来已运行的程序)

supervisorctl reload

载入所有配置文件,并按新的配置启动、管理所有进程

(会重启原来已运行的程序)

supervisorctl start xxx:

启动某个进程

supervisorctl stop groupworker

重启所有属于名为groupworker这个分组的进程

(start,restart同理)

supervisorctl stop all

停止全部进程

注:start、restart、stop都不会载入最新的配置文

supervisorctl reread

当一个服务由自动启动修改为手动启动时执行

 

 

posted on 2019-12-12 15:07  明.Sir  阅读(1336)  评论(0编辑  收藏  举报

导航