将流量路由到 HAproxy 中延迟最低的节点

将流量路由到 HAproxy 中延迟最低的节点

是否可以通过 HAproxy 将请求路由到具有源 IP 最低延迟的服务器?这似乎是一个非常必要的要求,但我似乎找不到任何东西。

我的问题是,我们的数据中心位于美国西海岸,而来自欧洲、亚洲和南美洲的需求越来越多,而这些位置的延迟使得应用程序无法使用。

答案1

鉴于 haproxy代理请求,所有流量无论如何都会通过 haproxy,因此将它们发送到不同的地方不会对您有任何帮助,因为您所做的只是通过比需要的更多次运行流量来增加更多延迟。您需要使用地理或拓扑 DNS 引擎将用户直接发送到最近的可用服务器。

答案2

HAproxy 无法判断最终用户和您的某台服务器之间的延迟是多少,因为需要在这两方之间执行 ping 操作。

您可以做的是设置 geodns,以便将在欧洲分配的 IP 发送到您的欧洲位置,将南美分配的 IP 发送到您的德克萨斯州位置,依此类推。

答案3

您可以编写自己的简单 inetd/xinetd 脚本,并让 haproxy 通过该脚本检查后端服务器的运行状况。您自己的脚本可以检查后端机器负载、连接数等,并决定是否接受新流量。提示:此脚本的行为应类似于非常简单的 http 服务器,您可以轻松地在 shell 中编写它。您需要实现的唯一方法是 200 响应和 500 以通过或拒绝进一步的请求。

相关内容