通知haproxy的主管事件侦听器
supervisor-haprox的Python项目详细描述
主管haproxy
supervisor-haproxy是通知haproxy的主管事件侦听器 当程序状态改变时。
通过主动通知haproxy,我们可以避免haproxy向 正在关闭或即将关闭以进行维护的服务器。
事件侦听器监听主管PROCESS_STATE事件并发送 通过管理级stats套接字将状态更新为haproxy。
配置
安装eggsupervisor-haproxy时,管理器事件侦听器 创建为控制台脚本supervisor-haproxy。 它需要在管理器配置中进行配置,并且需要 haproxy统计socket和程序信息以便正确工作。
程序信息的格式是supervisorProgram:HaProxyBackend/HaProxyServer, 例如instance2:plone04/plone0402并告诉事件侦听器 supervisor中的程序是haproxy中的哪个后端服务器。
首先在haproxy配置中配置stats套接字
然后在supervisor配置中配置supervisor haproxy事件侦听器: 使用buildout配置管理器的示例:global
stats socket ipv4@127.0.0.1:8801 level admin
[eventlistener:HaProxy]command=.../bin/supervisor-haproxy tcp://localhost:8801 instance1:plone01/plone0101 instance2:plone01/plone0102events=PROCESS_STATEprocess_name=HaProxy
[supervisor]plugins +=
supervisor-haproxyeventlisteners +=
HaProxy PROCESS_STATE ${buildout:bin-directory}/supervisor-haproxy [tcp://localhost:8801 instance1:plone01/plone0101 instance2:plone01/plone0102]
开发/测试
对于开发和运行测试,您需要安装:
安装tox和docker之后,您可以克隆存储库并运行 使用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负载问题。[乔恩]
1.0.0(2016-09-30)
- 初步实施 [乔恩]