当前位置: 首页 > Linux

永不消亡的进程!服务器进程管理神器Supervisor

时间:2023-04-06 23:21:26 Linux

简介Supervisor是一个客户端/服务器系统,允许用户在类UNIX操作系统上控制很多进程。是基于python语言开发的进程管理工具。Supervisor的服务器端称为supervisord,主要负责在自身启动时启动被管理的子进程,响应客户端命令,重启崩溃或退出的子进程,记录子进程的stdout和stderr输出,生成并处理子进程-进程生命周期事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态以及它管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。Supervisor的客户端叫做supervisorctl,它提供了一个类似shell的界面(即命令行)来使用supervisord服务器提供的功能。通过supervisorctl,用户可以连接到supervisord服务器进程,获取该服务器进程控制的子进程的状态,启动和停止子进程,获取正在运行的进程列表。客户端通过Unix域套接字或TCP套接字与服务器通信,服务器具有身份证书认证机制,可有效提高安全性。当client和server在同一台机器上时,client和server共享同一个配置文件/etc/supervisord.conf,两者的配置通过不同的标签来区分。Supervisor还提供了一个网页来查看和管理进程状态,很少有人用到。官网:http://supervisord.org安装环境准备系统环境[root@nginx~]#cat/etc/redhat-releaseCentOSLinuxrelease7.4.1708(Core)[root@nginx~]#uname-r3.10.0-693.17.1.el7.x86_64[root@nginx~]#python--versionPython2.7.5如果没有安装python环境,可以使用yuminstallpython-y安装平台。Supervisor可以在大多数Unix系统上运行,但不支持在Windows系统上运行。Supervisor需要Python2.4及以上版本,但不支持任何Python3版本。安装supervisor服务Installeasy_install[root@nginx~]#yuminstallpython-setuptools-devel-y安装supervisoreasy_installsupervisorsupervisor安装完成后会生成三个执行程序:supervisortd#supervisor的守护服务(用于接收进程管理命令)supervisorctl#Client(用于与daemon进程通信,发送指令管理进程)echo_supervisord_conf#生成初始配置文件创建配置文件的程序一般可以通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件mkdir/etc/supervisorecho_supervisord_conf>/etc/supervisor/supervisord.conf[root@~]#ll/etc/supervisor/supervisord.conf-rw-r--r--1rootroot9710Jan2415:10/etc/supervisor/supervisord.conf配置文件参数介绍[unix_http_server]file=/tmp/supervisor.sock;UNIXsocket文件,supervisorctl会使用;chmod=0700;socket文件的模式,默认为0700;chown=nobody:nogroup;socket文件的所有者,format: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.loglogfile_maxbytes=50MB;日志文件的大小超过就会轮转,默认50MB,如果设置为0,表示无限大小logfile_backups=10;默认日志文件备份数为10,设置为0表示不备份loglevel=info;日志级别,默认信息,其他:debug,warn,tracepidfile=/tmp/supervisord.pid;pidfilenodaemon=false;是否在前台启动,默认为false,即作为守护进程启动minfds=1024;可以打开的文件描述符的最小值,默认为1024minprocs=200;可以打开的进程数的最小值,默认为200[supervisorctl]serverurl=unix:///tmp/supervisor。短袜;通过UNIXsocket连接supervisord,路径与unix_http_server中的文件一致;serverurl=http://127.0.0.1:9001;通过HTTP[program:xx]连接到supervisord;[program:xx]为托管进程配置参数,xx为进程名称command=/opt/tomcat/bin/catalina.shrun;程序启动命令autostart=true;startsecs=supervisord启动时自动启动10;如果启动10秒后没有异常退出,说明进程已经正常启动。默认值为1秒。杀掉后重启startretries=3;启动失败自动重试次数,默认3user=tomcat;使用哪个用户启动进程,默认为rootpriority=999;;将stderr重定向到stdout,默认falsestdout_logfile_maxbytes=20MB;stdout日志文件大小,默认50MBstdout_logfile_backups=20;stdout日志文件备份个数,默认为10;stdout日志文件,指定目录时需要注意不存在则无法正常启动,需要手动创建目录(supervisord会自动创建日志文件)stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.outstopasgroup=false;默认为false,进程被kill时,是否向该进程组发送停止信号,包括子进程killasgroup=false;默认为false,向进程组发送kill信号,包括子进程[include];包括其他配置文件files=relative/directory/*.ini;可以指定一个或多个以.ini结尾的配置文件。注意:在配置文件中;是对常用命令的注释。supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行不带参数的supervisorctl命令。进入supervisor客户端的交互终端,会列出当前管理的所有进程。[root@java-test~]#supervisorctlsupervisor>helpdefaultcommands(typehelp):========================================addclearfgopenquitremoverestartstartstopupdateavailexitmaintailpidreloadrereadshutdownstatustailversion可以使用help命令查看相关命令的使用和参数配置管理过程下面是配置Tomcat的过程示例:[program:tomcat]command=/usr/local/tomcat/bin/catalina.shrunsstdout_logfile=/usr/local/tomcat/logs/catalina.outautostart=trueautorestart=truestartsecs=5priority=1stopasgroup=truekillasgroup=true配置完成后,启动服务supervisord-c/etc/supervisor/supervisord.conf启动后需要进行如下操作更新配置文件[root@~]#supervisorctlupdate[root@~]#supervisorctlstatustomcatRUNNINGpid12223,uptime0:06:31终端命令supervisorctlstatussupervisorctlstoptomcatsupervisorctlstarttomcatsupervisorctlrestarttomcat相关安装配置介绍到此结束。一般在实际生产中,不建议将所有配置写在同一个配置文件中,可以分开写。