supervisor 安装配置实战

1·Supervisor介绍
Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
这个工具主要就两个命令:

    supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令

    supervisorctl:启动supervisor的命令行窗口。

2·安装
centos 平台可以直接使用yum源安装
yum install supervisor
添加服务自启动
chkconfig supervisord on

3·服务器启停
/etc/init.d/supervisord {start|stop|status|restart|reload|force-reload|condrestart}

4·主配置文件
vim /etc/supervisord.conf
包含如下几个可配置部分
[unix_http_server]
[inet_http_server]
[supervisord]
[supervisorctl]
[program:x]
[include]
[group:x]
[fcgi-program:x]
[eventlistener:x]
[rpcinterface:x]
需要重点关注的是以下两部分
[program:x]中配置要监控的进程
[group:x] 将要监控的进程分组
这里列出常用的参数解释:
[unix_http_server]
file=/tmp/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ;socket文件的mode,默认是0700
;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid

;[inet_http_server] ;HTTP服务器,提供web管理界面
;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
;username=user ;登录管理后台的用户名
;password=123 ;登录管理后台的密码

[supervisord]
logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info ;日志级别,默认info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ;pid 文件
nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024 ;可以打开的文件描述符的最小值,默认 1024
minprocs=200 ;可以打开的进程数的最小值,默认 200

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致

一般使用是将管理的程序的配置文件写在子文件夹中,字文件夹中写你需要具体管理的程序的配置信息
包含其它配置文件
[include]
files = /etc/supervisord.d/*.ini;可以指定一个或多个以.ini结束的配置文件

5·子配置文件(具体服务管理的文件)
cd /etc/supervisord.d/

#program:后面写的是管理的服务的名称
[program:saas-tomcat]
#启动的命令
command=/usr/local/apache-tomcat-7.0.64/bin/catalina.sh run
#supervisord的环境变量
environment=JAVA_HOME="/usr/local/jdk/",JAVA_BIN="/usr/local/jdk/bin"
#是否有多进程,有多进程,需要额外添加一个参数去定义,为1是没有多进程
numprocs=1
#发送停止的信号
stopsignal=INT
#程序的目录
directory=/usr/local/apache-tomcat-7.0.64/
#用户
user=www-data
#是否重定向错误输出到stdout,一般会配置此项目,这样当查看程序日志的时候就不需要看两个日志文件,只需要看一个日志即可
redirect_stderr=true
#服务日志存放的路径
stdout_logfile=/data/log/tomcat/catalina-supervisor.out
#日志大小限制,为0代表不限制可以无限增长
stdout_logfile_maxbytes=0
#备份30天的日志,
stdout_logfile_backups=30
#当服务停止的时候要不要停止所管理的服务,下面两个都是这个意思
stopasgroup=true
killasgroup=true

注意:上面的日志是无限增长的,不会切割,代表日志会一直变大,而且会放在一个文件中,所以一般会结合logrotate,对日志每天进行切割
下面贴上logrotate的配置:
cat /etc/logrotate.d/tomcat
/data/log/tomcat/*.out {
daily #每天进行切割
compress #是否采用gzip进行压缩
copytruncate #用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据
notifempty #当日志文件为空时,不进行轮转
rotate 15 #保留15天的日志
missingok # 表示如果找不到log文件也OK
}

6、日常运维命令
配置文件更改之后,需要执行这个命令才能生效
supervisorctl update

查看服务的状态
supervisorctl status

启动停止服务的命令
supervisorctl (start|stop|restart)

猜你喜欢

转载自blog.51cto.com/8341475/2155990