当前位置: 首页 > Linux

Linux进程管理工具Supervisor详解

时间:2023-04-06 06:02:26 Linux

Supervisor安装配置(linux/unix进程管理工具)Supervisor(http://supervisord.org)是一个用Python开发的client/server服务,是Linux/Unix系统的进程管理工具不支持Windows系统。它可以轻松地监视、启动、停止和重新启动一个或多个进程。有了Supervisor管理的进程,当一个进程被意外kill时,supervisort会在监测到该进程挂掉后自动重启。由于Supervisor是Python开发的,安装前请检查系统是否安装了Python2.4及以上版本。下面介绍Supervisor在CentOS7.6和Python2.7.5环境下的安装配置步骤:实验环境系统平台cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)Python版本python-VPython2.7.5if如果python版本低于2.6,请升级。安装python3.6.8的安装示例如下:yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel-ylibffi-develwgethttps://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xztarxfPython-3.6.8.tar.xzcdPython-3.6。8./configure--prefix=/usr/local/python368make&&makeinstallecho'exportPATH=/usr/local/python368/bin:$PATH'>>/etc/profilesource/etc/profilepython3-VinstallSupervisorinstallSupervisor那里方法很多,下面介绍其中的三种,我这里使用的第三种是1.easy_install安装supervisor和安装Python包管理工具(easy_install)easy_install是setuptools包中包含的一个命令。使用easy_install实际上是调用setuptools来完成安装模块工作,所以安装setuptools:wgethttps://pypi.io/packages/source/s/setuptools/setuptools-33.1.1.zipunzipsetuptools-33.1.1.zipcdsetuptools-33.1.1pythonsetup.py安装easy_installsupervisor2,pipinstallsupervisor使用pip安装,前提是保证pip版本大于2.6pipinstallsupervisor3,yumepel-releaseinstallsupervisoryuminstall-yepel-release&&yuminstall-ysupervisorsuperviso命令会生成三个supervisor安装完成后的执行程序:supervisord、supervisorctl、echo_supervisord_conf:?supervisordd:用于管理supervisor自身的服务?supervisorctl:用于管理我们需要委托给supervisor工具的服务?echo_supervisord_conf:用于生成supervisord配置文件?supervisor的daemonservice(用于接收进程管理命令)?Client(用于与daemon进程通信,发送管理进程的指令)[root@Jumpserver/]#whichsupervisord/bin/supervisord[root@Jumpserver/]#whichsupervisorctl/bin/supervisorctl[root@Jumpserver/]#whichecho_supervisord_conf/bin/echo_supervisord_conf配置Supervisor,运行echo_supervisord_conf程序生成supervisor的初始化配置文件。如果使用yum安装,这一步可以省略,直接修改配置文件即可。步骤mkdir/etc/supervisord.decho_supervisord_conf>/etc/supervisord.conf修改配置文件supervisor中的配置文件很多,但是很多不加修改就可以使用。我这里只修改了下面两项#修改socket文件的模式,默认是0700sed-i's/;chmod=0700/chmod=0766/g'/etc/supervisord.conf#在下面添加两行配置文件末尾包含/etc/supervisord目录sed-i'$a[include]\files=/etc/supervisord.d/*.conf'/etc/supervisord.conf写需要被Supervisor管理的进程Supervisor只能管理非dameon进程,和默认一样redis作为前台运行,tomcat其实就是startup.shshutdown.sh调用catalina.sh后台运行。默认情况下,catalina.sh是一个运行在前台的程序,不能像Nginx一样管理非dameon进程。Tomcat由Supervisor管理。Tomcat安装如下:wgethttp://us.mirrors.quenda.co/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gzyuminstalljava-1.8.0-openjdk.x86_64java-1.8.0-openjdk-devel.x86_64-ytarxfapache-tomcat-8.5.47.tar.gz-C/usr/local/mv/usr/local/apache-tomcat-8.5.47/usr/local/tomcat想要我们如果应用由Supervisor管理,需要在/etc/supervisord目录下编写配置文件。Tomcat案例如下:vim/etc/supervisord.d/tomcat.conf[program:tomcat]#程序唯一名称目录=/usr/local/tomcat#程序路径命令=/usr/local/tomcat/bin/catalina.shrun#运行程序命令autostart=true#supervisord启动后tomcat是否启动startsecs=10#启动1如果0秒后没有异常退出,说明进程已经正常启动。默认值为1秒。autorestart=true#程序退出后自动重启,可选值:[unexpected,true,false],默认是unexpected,表示进程被意外杀死,表示如果进程没有被supervisord关闭,就会被视为不当关闭,supervisord会重新启动进程,只能通过supervisorctl进行关闭、启动、重启操作startretries=3#启动失败自动重启的尝试次数,默认为3user=root#用哪个用户启动进程,默认rootpriority=999#进程启动优先级,默认999,如果Supervisord需要管理多个进程,那么值小的先启动stopsignal=INTredirect_stderr=true#把stderr重定向到stdout标准输出,默认falsestdout_logfile_maxbytes=200MB#stdout标准输出日志文件大小,日志文件大小达到200M后,将被切割,切割后的日志文件会被标记为catalina.out1,catalina。out2,catalina.out3。..,default50MBstdout_logfile_backups=100#stdout标准输出日志文件备份个数,保存100个200MB日志文件,超过100个旧的会删除,默认10个,保存10个stdout_logfile=/usr/local/tomcat/logs/catalina.out#标准日志输出位置,如果输出位置不存在,则启动失败stopasgroup=false#默认false,当进程被kill时,是否向进程组,包括子进程发送停止信号killasgroup=false#默认为false,向进程组,包括子进程发送kill信号.进程启动后使用supervisord管理,当你使用/usr/local/tomcat/shutdown.sh或者kill$PID时,supervisord会认为是意外关机,会自动再次拉起进程,除非你使用supervisord命令关闭#supervisord启动supervisord-c/etc/supervisord.conf#启动supervisord进程,我们在配置文件中设置autostart=true参数,tomcat也会在supervisord启动时启动ps-ef|grepjava#查看tomcat是否启动 程序管理supervisorctlstatustomcat#tomcatStatussupervisorctlstoptomcat#停止tomcatsupervisorctlstarttomcat#启动tomcatsupervisorctlrestarttomcat#重启tomcatsupervisorctlreoloadtomcat#重磅tomcatRedis由Supervisor管理。Redis默认不会在配置文件中添加daemonizeyes。该参数是前台启动的,所以我们的Supervisor也可以使用管理的redis配置文件如下:catredis6001.confport6001bind192.168.31.230保护模式yespidfile"/usr/local/redis/run/redis6001.pid"loglevelnoticelogfile"/usr/local/redis/logs/redis6001.log"save9001stop-writes-on-bgsave-erroryesrdbcompressionyesrdbchecksumyesdbfilenamedump.rdbdir"/usr/local/redis/data/rdb/"timeout0tcp-keepalive300写一个redis由Supervisor管理的案例vim/etc/supervisord.d/redis.conf[program:redis]directory=/usr/local/rediscommand=/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis6001.confautostart=truestartsecs=10autorestart=truestartretries=3user=rootpriority=999stopsignal=INTredirect_stderr=truestdout_logfile_maxbytes=200MBstdout_logfile_backups=100log/stdoutr/local/redis/logs/redis6001.logstopasgroup=falsekillasgroup=false使用super启动redis#closetomcatsupervisorctlstoptomcattomcat:stopped#killsupervisordps-ef|grepsupervisordroot269271010:47?00:00:00/usr/bin/python/bin/supervisord-c/etc/supervisord.confroot2754927402011:07pts/200:00:00grep--color=autosuperkill-926927#重启supervisord重新加载配置文件,supervisord默认会同时拉起redis和tomcatsupervisord-c/etc/supervisord.conf程序管理supervisorctlstatusredis#redisstatussupervisorctlstopredis#stopredissupervisorctlstartredis#startredissupervisorctlrestartreids#restartredissupervisorctlreoloadredis#reloadredisprogrammanagementprogrammanagementsupervisorctlstatusall#查看所有进程状态supervisorctlstopall#停止所有进程supervisorctlstartall#启动所有进程supervisorctlrestartall#Restartallprocessessupervisorctlreoloadall#重新加载所有进程supervisord启动配置vim/usr/lib/systemd/system/supervisord.service[Unit]Description=ProcessMonitoringandControlDaemonAfter=rc-local.servicenss-user-lookup.target[Service]类型=forkingExecStart=/usr/bin/supervisord-c/etc/supervisord.conf[Install]WantedBy=multi-user.targetsystemctlenablesupervisordsystemctlis-enabledsupervisord以上就是亮旭教程网为各位小伙伴分享的Linux进程管理工具Supervisor的详解了以上是良序教程网为朋友们分享的Linux相关知识。