多个 HAProxy 之间共享连接状态

多个 HAProxy 之间共享连接状态

我需要将我们当前基于单服务器的基础设施升级为多服务器基础设施。基本上,我们运行 HTTP 应用程序、MySQL 和其他服务。

我的想法是把 HAProxy 放在全部服务器,以便它们能够自行平衡/故障转移。

像这样:

        WAN
    |         |
|------|  |------|
| HAP1 |  | HAP2 |      HAProxy servers 
|------|  |------|
   \         /
    ----X----
   /         \
|------|  |------|
| NGX1 |  | NGX2 |      Nginx webservers
|------|  |------|

这个想法是使用指向 HAP 服务器的循环 DNS 配置公共主机名,然后平衡到 Web 服务器。

为了有一个并非完全随机平衡我希望使用最小连接数算法,但是问题来了:HAP 服务器是否可以相互共享平衡传入连接的方法?我想避免两台服务器都考虑由于上游循环而卸载后端。

编辑:我想避免使用保持活跃由于服务器位于不同的数据中心,因此两个 HAP 共享一个虚拟 IP。

答案1

如果您计划在不同的数据中心拥有主动/主动负载均衡器,那么可靠地双向共享连接状态信息将非常困难。

鉴于您关心后端服务器的负载,并以此来决定选择哪一个,那么您应该去找他们来确定要发送多少流量。

值得庆幸的是,HAProxy 对此有一些指令:agent-checkagent-port
我想weightagent-inter也应该包括在内,因为它们在这里也有一定的作用。

这样你就可以在每台后端服务器上运行一个服务,该服务将以字符串作为响应,如文档,这会影响服务器的权重。

代理可以检查几乎任何东西(CPU、内存、网络、相关服务、一天中的时间、天气),只要它返回 HAProxy 可以使用和理解的合理值。

相关内容