我需要将我们当前基于单台服务器的基础架构升级为多台服务器。基本上我们运行一个 HTTP 应用程序、MySQL 和其他服务。
我的想法是把 HAProxy 放在所有服务器上,这样他们就可以自己平衡/故障转移。
像这样的东西:
WAN
| |
|------| |------|
| HAP1 | | HAP2 | HAProxy servers
|------| |------|
\ /
----X----
/ \
|------| |------|
| NGX1 | | NGX2 | Nginx webservers
|------| |------|
这个想法是使用指向 HAP 服务器的循环 DNS 配置公共主机名,然后将平衡到 Web 服务器。
为了获得不完全随机的平衡,我希望使用leastconn算法,但问题来了:HAP 服务器是否可以相互共享它们如何平衡传入连接?我想避免两台服务器都考虑由于上游循环而卸载后端。
编辑:我想避免使用keepalived和两个 HAP 共享的虚拟 IP,因为服务器将位于不同的数据中心。
如果您计划在不同的数据中心拥有主动/主动负载均衡器,那么两种方式都很难可靠地共享连接状态信息。
鉴于您关心后端服务器上的负载作为决定选择哪个服务器的一种方式,因此您应该去找他们确定要发送多少流量。
值得庆幸的是,HAProxy 对此有一些指令:
agent-check
,agent-port
.我想
weight
并且agent-inter
也应该包括在内,因为它们在这里也有一些影响。这允许您在每个后端服务器上运行服务,该服务将以字符串响应,如文档中所述,这将影响服务器的权重。
代理几乎可以检查任何内容(CPU、内存、网络、相关服务、时间、天气),只要它返回 HAProxy 可以使用和理解的合理值。