简单介绍

  Supervisor是一个客户端/服务器系统,允许用户在类UNIX操作系统上控制许多进程。它是基于python语言开发一个进程管理工具。

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

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

Supervisor也提供了一个web页面来查看和管理进程状态,这个功能用得人比较少。

官方网站:http://supervisord.org

安装环境准备

系统环境

[root@nginx ~]# cat /etc/redhat-release 

CentOS Linux release 7.4.1708 (Core) 

[root@nginx ~]# uname -r

3.10.0-693.17.1.el7.x86_64

[root@nginx ~]# python --version

Python 2.7.5

如果没有安装 python环境可以使用yum install python -y进行安装

平台要求

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

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

安装supervisor服务

安装easy_install

[root@nginx ~]# yum install python-setuptools-devel -y

安装supervisor

easy_install supervisor

supervisor安装完成后会生成三个执行程序:

supervisortd

#supervisor的守护进程服务(用于接收进程管理命令)

supervisorctl

#客户端(用于和守护进程通信,发送管理进程的指令)

echo_supervisord_conf

#生成初始配置文件程序

创建配置文件

一般可以通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

[root@ ~]# ll /etc/supervisor/supervisord.conf 

-rw-r--r-- 1 root root 9710 Jan 24 15:10 /etc/supervisor/supervisord.conf

配置文件参数介绍

[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一致

;serverurl=http://127.0.0.1:9001

; 通过HTTP的方式连接supervisord

[program:xx] 

; [program:xx]是被管理的进程配置参数,xx是进程的名称

command=/opt/tomcat/bin/catalina.sh run 

; 程序启动命令

autostart=true  ; 在supervisord启动的时候也自动启动

startsecs=10  ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒

autorestart=true  ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启

startretries=3  ; 启动失败自动重试次数,默认是3

user=tomcat    ; 用哪个用户启动进程,默认是root

priority=999   ; 进程启动优先级,默认999,值小的优先启动

redirect_stderr=true ; 把stderr重定向到stdout,默认false

stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB

stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10

; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)

stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out

stopasgroup=false 

;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程

killasgroup=false     

;默认为false,向进程组发送kill信号,包括子进程

[include] ;包含其它配置文件

files = relative/directory/*.ini   

;可以指定一个或多个以.ini结束的配置文件

注:配置文件中;是注释

常用命令介绍

supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。 

[root@java-test ~]# supervisorctl 

supervisor> help

default commands (type help <topic>):

=====================================

add  clear  fg  open  quit  remove  restart  start  stop  update 

avail exit maintail  pid  reload  reread  shutdown status tail version

可以通过help命令查看相关命令的使用及参数

配置管理进程

下面是配置Tomcat进程的一个例子:

[program:tomcat]

command=/usr/local/tomcat/bin/catalina.sh run

stdout_logfile=/usr/local/tomcat/logs/catalina.out

autostart=true

autorestart=true

startsecs=5

priority=1

stopasgroup=true

killasgroup=true

配置完成后,启动服务

supervisord -c /etc/supervisor/supervisord.conf

启动后需要执行下面的操作来更新配置文件

[root@ ~]# supervisorctl update

[root@ ~]# supervisorctl status

tomcat     RUNNING   pid 12223, uptime 0:06:31

终端的命令

supervisorctl status

supervisorctl stop tomcat

supervisorctl start tomcat

supervisorctl restart tomcat

至此相关的安装与配置介绍结束,一般实际生产中,不建议将所有的配置写在同一个配置文件中,可分开写。


©著作权归作者所有:来自51CTO博客作者mob604756ef35df的原创作品,如需转载,请注明出处,否则将追究法律责任

好知识,才能预见未来

赞赏

0人进行了赞赏支持

更多相关文章

  1. 启动延时缩短 50%-80%,函数计算发布镜像加速功能
  2. CDH启动lzo压缩
  3. Docker遇到Syslog的踩坑小记
  4. 工程师们在"摔倒"后如何不尴尬
  5. 阻塞 非阻塞 进程等待 wait waitpid
  6. docker socket文件打开数量过多分析
  7. Linux下查看进程线程数的方法
  8. 架构师和老运维必懂的 Nginx 的热部署、热加载、平滑升级!
  9. 与大家分享一下,在workerman开发中遇到的问题与解决方法

随机推荐

  1. 如何使用 SSH 远程控制一台 Windows 服务
  2. 高效开发!借助 Mac + Windows 实现八屏办
  3. 200 行代码实现一个滑动验证码
  4. 架构设计|异步请求如何同步处理?
  5. 项目里文件名永远不要用中文!永远不要!
  6. 每日一技|活锁,也许你需要了解一下
  7. 深入剖析 RSA 密钥原理及实践
  8. 天啦噜!生产机器连接数飙升到上万,背后发生
  9. 别只用 Selenium,新神器 Pyppeteer 绕过淘
  10. Android中ADT插件的安装