Supervisor|官方文档梳理

官方文档地址:http://supervisord.org/introduction.html

1.1 概要

Supervisor是一个客户端 / 服务器系统,允许用户在类 UNIX 操作系统上控制多个进程。它具有如下设计思路:

  • Supervisord 通过将进程作为其子进程启动,实现了当 Supervisord 启动时可以自动启动其他进程,并可以在其他进程崩溃时自动重启它们;同时也使 supervisor 进程始终知道其子进程的真实 up / down 状态,从而可以方便地查询这些信息
  • Supervisorctl 只允许用户通过 shell 或 web UI 发出 “启动”、“停止” 和 “重新启动” 等简单的命令来控制由 supervisord 控制的子进程
  • 允许对进程分组及分配优先级,支持以组为单位批量控制进程;当批量控制进程时,会按照进程优先级顺序启动它们

1.2 特性

  • 简单:使用 ini 风格的配置文件来进行配置
  • 集中:提供了本地 shell 或与 Web UI 来统一地控制进程;进程可以单独或按组进行控制
  • 高效:supervisor 通过 fork / exec 启动其子进程,不需要依赖 PID 文件和定期轮询来重启失败的进程
  • 可扩展:supervisor 拥有一个简单的事件通知协议,可以用任何语言来监控它
  • 兼容性:supervisor 可以包括 Linux、Mac OS、Solaris、FreeBSD 等操作系统上运行,不需要安装 C 编译器

1.3 Supervisor 组件

1.3.1 supervisord

Supervisor 的服务器部分被命名为 supervisord。它负责在自身调用时启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录子进程的标准输出和标准错误输出,并生成和处理与子进程生命周期中的各个点对应的 “事件”。

服务器进程使用 “Windows-INI” 风格的配置文件,通常位于 /etc/supervisord.conf。这个文件的安全性非常重要,因为它可能包含未加密的用户名和密码。

1.3.2 supervisorctl

Supervisor 的命令行客户端部分被命名为 supervisorctl。它提供了一个类似于 shell 的界面,用于访问 supervisord 提供的功能。通过 supervisorctl,用户可以连接到不同的 supervisord 进程(一次只能连接一个),获取由其控制的子进程的状态,停止和启动子进程,并获取运行中进程的列表。

命令行客户端通过 UNIX domain socket 或 internet (TCP) socket 与服务器进行通信。服务器可以要求客户端用户在执行命令之前提供身份验证凭据。客户端通常与服务端使用相同的配置文件,且配置文件中包含 [supervisorctl] 部分将在客户端生效。

1.3.3 Web Server

网络用户界面,具有与 supervisorctl 相当的功能。可以通过浏览器访问使用 internet socket 启动的 supervisord。

在激活配置文件中 [inet_http_server] 部分后,就可以通过Web界面查看和控制进程状态(例如:http://localhost:9001/)。

1.3.4 XML-RPC Interface

supervisor 的 HTTP 服务器既提供 Web 用户界面,也提供 XML-RPC 接口,可用于查询和控制 Supervisor 及其运行的程序。

1.4 环境要求

操作系统:Linux(Ubuntu 18.04)、Mac OS X(10.4 / 10.5 / 10.6)、Solaris (10 for Intel)、FreeBSD 6.1

Python 版本:Python 3.4 + 或 Python 2.7 +

猜你喜欢

转载自blog.csdn.net/Changxing_J/article/details/132919544