首页开发教程Supervisor进程高可用工具全方位解析

Supervisor进程高可用工具全方位解析

2025-08-01 289

Supervisor是一款专注于进程管理与监控的工具,由Geoffrey Talvola开发,采用Python语言编写,尤其适合在类UNIX系统(像Linux和macOS)中使用。Supervisor设计初衷是为了简化进程管理流程,确保即便进程出现崩溃或意外退出的情况,也能自动将其重启,进而保障系统的稳定性和服务的持续运行。

一、Supervisor特点

由于Linux操作系统本身就内置了Python运行环境,而且Supervisor没有过多的第三方依赖包,整个离线源码安装压缩包仅500k左右,因此使用和安装门槛较低,无需我们为安装该软件投入过多精力或引入额外的第三方依赖。

Supervisor进程高可用工具全方位解析

Supervisor拥有大量的使用者,开源项目活跃度高,当遇到问题时,很容易就能搜索到相关资料,避免了用户独自摸索、踩坑的情况。项目成熟度高,经过了市场的长期验证,大家可以放心使用。

二、Supervisor安装教程

1、Supervisor在线安装

(1)pip安装:

pip install supervisor

(2)centos yum安装

yum install epel-release -y

再执行:

yum install supervisor -y。

2、Supervisor离线安装

在pypi上搜索supervisor包并下载源码包,地址为:

https://files.pythonhosted.org/packages/ce/37/517989b05849dd6eaa76c148f24517544704895830a50289cbbf53c7efb9/supervisor-4.2.5.tar.gz

或也可通过wget命令下载:

“https://files.pythonhosted.org/packages/ce/37/517989b05849dd6eaa76c148f24517544704895830a50289cbbf53c7efb9/supervisor-4.2.5.tar.gz”

运行python3 setup.py install进行安装。若过程中提示缺少某些package,补充相应package即可。这些package的安装方式类似,也是下载源码包后通过python执行setup.py安装。

三、Supervisor基本架构说明

Supervisor运行架构以客户端/服务器(Client/Server)模型为基础,核心组件包括supervisord守护进程、supervisorctl客户端工具,此外还提供了一个HTTP服务器,用于远程管理和监控。

1、supervisord服务端

supervisord是Supervisor的核心组件,作为守护进程在服务器上运行,主要职责如下:

(1)读取配置文件:从配置文件中获取被监控进程的列表及相关参数。

(2)管理进程:启动、停止和重启配置文件中定义的进程。

(3)监控进程状态:实时监视进程的运行状态,一旦进程因某种原因退出,会根据配置自动重启。

(4)日志管理:收集被监控进程的输出,并将其重定向到日志文件。

(5)事件通知:当进程状态发生变化时,能够触发预定义的事件处理程序。

2、supervisorctl客户端

supervisorctl是一款命令行工具,作为客户端与supervisord守护进程进行通信,可执行以下操作:

(1)管理进程:实现进程的启动、停止、重启,并能显示进程状态。

(2)配置管理:在不重启supervisord的情况下更新配置文件。

(3)事件管理:查看和管理事件处理程序。

(4)连接服务端:通过与supervisord建立RPC连接来发送命令和接收响应,因此只要网络可达且权限合适,可在任何地方对supervisord进行管理。

四、Supervisor使用教程

启动supervisord守护进程,启动后默认在后台运行,并监听一个本地socket文件。主配置文件默认位于/ect/supervisord/supervisord.conf,我们通常在supervisord.d目录下定义管理进程的.ini配置文件,文件格式大致如下:

[program:mysql] # mysql,程序名称
directory = /data/mysql/ # 程序所处工作路径
command=/data/mysql/bin/mysqld # 程序启动完整命令
autostart=true # 是否挂掉后自动拉起
autorestart=true # 是否挂掉后自动拉起
startretries=3 #重试拉起次数
startsecs=20 #多少秒后没挂,认为程序是正常运行的
redirect_stderr=true #是否重定向错误输出到标准输出
stdout_logfile=/data/mysql/supervisor-run.log #标准输出日志路径

1、执行supervisorctl reread重新读取新的配置信息。

2、运行supervisor update mysql启动托管的mysql任务。

3、输入supervisor status查看任务运行情况。

此时若进程意外退出,比如手动执行kill -9 $pid,过一会儿会发现该进程会被supervisor重新拉起,从而保证进程的正常运行。

五、supervisorctl常见子命令详解

1、start/stop/restart/status

start用于启动任务、stop用于停止任务、restart用于重启任务、status用于查看任务运行状态列表。

针对单个任务:

supervisorctl start mysql
supervisorctl stop mysql
supervisorctl restart mysql

针对所有任务:

supervisorctl stop all

查看托管的程序运行状态列表:

supervisorctl status

2、update

该命令用于更新Supervisor的配置,并重启所有需要重启的进程,通常在更改配置文件后使用:

supervisorctl update mysql

3、Reread

重新读取配置文件,但不会重启任何进程,一般用于检查配置文件的更改是否有效:

supervisorctl reread

4、reload

结合了reread和update的功能,重新读取配置文件并更新进程:

supervisorctl reload

5、remove

用于移除对一个或多个进程的监控:

supervisorctl remove mysql

6、tail

显示进程的最近日志输出,其中-f表示跟随日志的实时输出:

supervisorctl tail -f myapp

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章