似乎 HAProxy 不允许这样做。我们在后端有 Tomcat 服务器,并计划使用 Apache + mod_jk 进行负载平衡。我们正在考虑切换到像 Netscaler 这样功能更全面的东西,但我没有卖掉,因为我正在寻找的部分功能是能够进行无缝部署,我可以在之前从负载平衡器中删除其中一台 Tomcat 服务器重新启动它。
小智 7
HAProxy 允许您通过将命令传递到 stats 套接字以禁用服务器来执行此操作。这将耗尽连接(与此服务器的现有连接将持续存在,但不会建立新连接)。
此页面很好地总结了可用命令:http : //code.google.com/p/haproxy-docs/wiki/UnixSocketCommands
和一个禁用示例:
echo "disable server <backend_name>/<server_name>" | socat stdio /var/run/haproxy.stat
Run Code Online (Sandbox Code Playgroud)
其中 /var/run/haproxy.stat 是命令的 UNIX 域套接字,它在 haproxy 配置文件中配置如下:
global
stats socket /var/run/haproxy.stat mode 600 level admin
Run Code Online (Sandbox Code Playgroud)
与任何其他全局选项一起。
不是你不具备的插座通过socat沟通,你可以连接到它像任何其他UNIX域套接字,这是很简单的Python,Perl和PHP,C等socat主要用于为方便起见,例子。