是否存在允许我在部署时手动关闭服务器的负载平衡器?

是否存在允许我在部署时手动关闭服务器的负载平衡器?

HAProxy 似乎不允许这样做。我们在后端有 Tomcat 服务器,并计划使用 Apache + mod_jk 进行负载平衡。我们正在考虑切换到功能更全面的产品,例如 Netscaler,但我并不认同,因为我所寻求的部分功能是能够进行无缝部署,这样我就可以在重新启动负载平衡器之前从负载平衡器中删除其中一台 Tomcat 服务器。

答案1

HAProxy 允许您通过将命令传递到统计套接字来禁用服务器来实现此目的。这将耗尽连接(与此服务器的现有连接将保留,但没有新的将与其建立连接)。

此页面对可用的命令进行了很好的总结: http://code.google.com/p/haproxy-docs/wiki/UnixSocketCommands

以及一个禁用示例:

echo "disable server <backend_name>/<server_name>" | socat stdio /var/run/haproxy.stat

其中 /var/run/haproxy.stat 是命令的 UNIX 域套接字,它在 haproxy 配置文件中配置如下:

global
    stats socket /var/run/haproxy.stat mode 600 level admin

以及任何其他全球选择。

不是你不要通过 socat 在套接字上进行通信,您可以像任何其他 UNIX 域套接字一样连接到它,这在 Python、Perl、PHP、C 等中非常简单。socat 主要用于示例中以方便使用。

答案2

mod_proxy如果您使用而不是 ,Apache 就可以做到这一点mod_jkmod_proxy_balancer可以与mod_statusmess-with-balancer-nodes 页面集成。请参阅这里

答案3

我使用 LVS (www.linuxvirtualserver.org),它允许您随时更改服务器的权重或将其从轮换中移除。当我需要在 Web 服务器上安装更新时,它非常方便。

答案4

NGINX 将允许您执行此操作,并进行非公平的负载平衡。

上游定义块允许您设置有关将发送请求到的上游服务器的各种设置。

  • 此服务器已关闭
  • 此服务器仅用于备份,如果有其他服务器启动,请勿使用
  • 如果该服务器失败超过 X 次,则停止使用它
  • 多久重新测试上游以查看其是否恢复
  • 对每个服务器进行加权,允许您将流量引导到具有您容量的地方。
  • 使用“ip_hash”,只要后端处于启动状态,它就会使客户端“粘”在后端。同一个客户端将始终转到同一个后端,这是某些具有持久会话数据(不会复制到其他上游)的应用程序所必需的

还有proxy_next_upstream 设置如果一个后端返回的结果不令人满意,则允许 NGINX 自动尝试不同的后端。

相关内容