在运维Linux服务的过程中,遇到服务器崩溃、进程被人为杀掉、或者后台任务失败无法自动重启时,使用、nohup这些方法似乎不行?足够可靠或足够灵活。
服务连续性和可靠性始终是运维人员的首要任务。那么,有没有办法实时监控后台程序和关键服务的运行状态,保证其在后台可靠运行呢?今天我想向大家介绍——Supervisor,一个用Python开发的强大的进程管理程序。
Supervisor是一个客户端/服务器系统,允许用户监视和控制基于UNIX的操作系统上的大量进程。 Supervisor 允许您实时监控进程执行情况、批量重启进程,并在程序挂起或服务器宕机时轻松提供自动进程恢复。创建一个shell 脚本来控制它。
Supervisor安装配置
1. 在Linux 上安装Supervisor 相对容易。
~ easy_install Supervisor 安装时,会生成三个可执行程序:supervisord、visorctl 和echo_supervisord_conf。它们分别是管理程序守护程序服务、客户端和初始化文件生成器。
Supervisor初始化配置文件:
~ echo_supervisord_conf /etc/supervisor/supervisord.conf 这里只需要做两处更改。最终结果将如下所示:
第一个是取消supervisorctl监听端口的注释。第二步是更改管理进程配置文件的目录。如果您想使用Supervisor来管理您的服务进程,只需将service.conf文件添加到相应的目录/etc/supervisord/中即可。
启动supervisord。 这里-c指定启动supervisord的配置文件。
~ Supervisord -c /etc/supervisord/supervisor.conf 显示当前在Supervisord 上托管的进程。
~visorctl status 目前,我们还没有在/etc/supervisord/下设置service.conf文件,所以这里什么也没有显示。
2. 让我们开始在Supervisor 上托管服务(我们将使用Redis 和一个简单的后台ping 任务作为示例)
1)~vi /etc/supervisord/redis.conf 相关设置及注释如下图所示。这里启动了一个名为test-redis-6379 的Redis 服务。
每次在Supervisor 上修改service.conf 文件时,必须运行以下命令来添加或修改服务:
~visorctl restart #读取托管服务配置文件~visorctl add test-redis-6379 #test-redis-6379 添加服务~visorctl status test-redis-6379 #显示服务状态2) ~ vi /etc/supervisord/ping.conf :010 -69503 显示所有托管服务的状态:
3。测试是否可以杀死服务异常并继续服务。这里我们通过Supervisor 手动杀死所有服务。您将看到该服务立即被拉起并自动重新启动。
4。如果测试服务器崩溃并异常重启,则启动时会自动启动supervisor,以便通过supervisorctl启动托管服务,无论服务和脚本是否可以自动启动,都需要设置先决条件。
~ echo '/usr/bin/supervisord -c /etc/supervisord/supervisor.conf' /etc/rc.local 服务器启动后,Supervisor 自动启动并连接任何托管的自定义服务Supervisor 提供了一个非常强大的工具。供运维人员管理特殊服务和脚本。您还可以考虑自己使用魔法的其他设置和方式。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。