supervisor是一个进程管理工具,当进程中断的时候supervisor能自动重新启动它,同时,它也是一个客户端/服务器系统,允许用户在类unix操作系统上控制多个进程。
supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
supervisor是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。
可实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
supervisor进程管理服务组成
supervisor主要包括以下四个核心部分组成:
supervisord
这是supervisor服务的主要管理器,运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程;
并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
supervisorctl
这是supervisor服务的客户端命令行工具,可以用来执行stop、start、restart等命令,来对这些子进程进行管理。
web Server
这是supervisor服务的网页可视化界面,可以通过web界面查看和控制进程状态,简化了对操作命令的学习;
xml-rpc interface
服务与web ui的同一个http服务器,提供一个xml-rpc接口,可以用来询问和控制管理程序及其他运行的程序;
supervisor服务运行环境说明
supervisor可以运行在大多数类unix系统,但是不能运行在任何windows系统,supervisor运行在python环境中;
可以在python2(2.7)版本上工作、python3(3.4)版本上工作、以及更高python版本上。
进程管理服务部署
进程管理服务安装过程
安装过程第一步:安装python工具
[root@xiaoQ ~]# yum install -y python-pip
安装过程第二步:安装supervisor程序
安装过程第三步:核心确认supervisor是否安装成功
进程管理服务配置信息
supervisor进程管理服务程序安装完毕后,会在系统中生成两个主要的配置文件:
主进程配置文件:/etc/supervisord.conf
子进程配置文件:/etc/supervisord.d/
子进程配置文件信息解析:
给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d/
目录下,以.ini作为扩展名;
每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起;
任意定义一个和脚本相关的项目名称的选项组,例如:/etc/supervisord.d/test.conf
子进程配置示例:
进程管理服务命令使用
在使用supervisor进程管理工具时,也会经常用到一些命令对工具进行管理控制:
序号命令信息作用说明01supervisorctl status查看所有进程的状态02supervisorctl stop es停止es服务程序03supervisorctl start es启动es服务程序04supervisorctl restart es重启es服务程序05supervisorctl update配置文件修改后使用该命令加载新的配置06supervisorctl reload重新启动配置中的所有程序
把es换成all可以管理配置中的所有进程。
直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。
进程管理服务启动应用
使用supervisor进程管理命令之前需要先启动supervisord,启动方法如下:
进程管理服务进程
进程管理应用实战-Nginx
supervisor服务项目创建
为了演示实现supervisor服务的功能,可以临时部署一个nginx服务程序,对nginx服务的进程进行监控;
下载安装nginx程序包:
supervisor服务项目配置
修改上面说明的supervisord.conf文件,文件最后两行配置信息的注释取消掉,也就是去掉分号信息:
创建一个测试使用的服务配置文件:nginx.ini
supervisor服务重新启动
编写完supervisor管理的进程服务配置文件后,可以使supervisor服务重新启动,加载编写的服务配置文件;
通过web界面查看服务进程运行情况:
supervisor服务修复测试
尝试杀掉nginx服务程序,模拟企业服务异常情况崩溃,查看supervisor服务是否能够自动重启nginx程序:
进程管理应用实战-tomcat
supervisor服务项目创建
为了演示实现supervisor服务的功能,可以临时部署一个tomcat服务程序,对tomcat服务的进程进行监控;
下载安装jdk8程序包:
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
设置配置jdk8环境变量:
检查jdk8程序包是否安装成功:
下载安装tomcat程序:
supervisor服务项目配置
修改上面说明的supervisord.conf文件,文件最后两行配置信息的注释取消掉,也就是去掉分号信息:
创建一个测试使用的服务配置文件:nginx.ini
supervisor服务重新加载
编写完supervisor管理的进程服务配置文件后,可以使supervisor服务加载新的服务进程,识别新编写的服务配置文件;
通过web界面查看服务进程运行情况: