跳转到主要内容

supervisor事件监听器,用于通知HaProxy

项目描述

supervisor-haproxy

supervisor-haproxy 是一个 supervisor 事件监听器,用于在程序状态变化时通知 HaProxy。

通过主动通知 HaProxy,我们可以避免 HaProxy 向即将下线或即将进行维护的服务器发送请求。

事件监听器监听 supervisor 的 PROCESS_STATE 事件,并通过管理员级别的状态套接字将状态更新发送到 HaProxy。

配置

当安装 egg supervisor-haproxy 时,supervisor 事件监听器作为控制台脚本 supervisor-haproxy 创建。它需要在 supervisor 配置中进行配置,并且需要 haproxy 状态套接字和程序信息才能正确工作。

程序信息的形式为 supervisorProgram:HaProxyBackend/HaProxyServer,例如 instance2:plone04/plone0402,告诉事件监听器 supervisor 中的哪个程序对应于 haproxy 中的哪个后端服务器。

首先在 haproxy 配置 中配置一个状态套接字

global
    stats socket ipv4@127.0.0.1:8801 level admin

然后在 supervisor 配置 中配置 supervisor haproxy 事件监听器

[eventlistener:HaProxy]
command = .../bin/supervisor-haproxy tcp://localhost:8801 instance1:plone01/plone0101 instance2:plone01/plone0102
events = PROCESS_STATE
process_name=HaProxy

使用 buildout 配置 supervisor 的示例

[supervisor]
plugins +=
    supervisor-haproxy
eventlisteners +=
    HaProxy PROCESS_STATE ${buildout:bin-directory}/supervisor-haproxy [tcp://localhost:8801 instance1:plone01/plone0101 instance2:plone01/plone0102]

开发和测试

为了开发和运行测试,您需要安装

  • tox 以运行测试。

  • docker 以便测试可以设置一个用于测试的 haproxy。

安装 toxdocker 后,您可以克隆存储库并使用 tox 命令运行测试

$ git clone git@github.com:4teamwork/supervisor-haproxy.git
$ cd supervisor-haproxy
$ tox

在运行测试时,docker 中的 haproxy 将绑定到端口 9902,因此您需要确保此端口可用。

变更日志

1.1.0 (2017-06-09)

  • 解决连接 HaProxy 失败时高 CPU 负载问题。[jone]

1.0.0 (2016-09-30)

  • 初始实现 [jone]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

supervisor-haproxy-1.1.0.tar.gz (15.5 kB 查看哈希值)

上传时间