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

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

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

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

您可以编写自己的简单的inetd / xinetd脚本,并通过该脚本使haproxy检查后端服务器的运行状况。 您自己的脚本可以检查后端机器负载,连接数量等,并决定是否接受新的stream量。 提示:这个脚本应该像非常简单的http服务器,你可以很容易地在shell中写入。 只有你需要实现的方法是200响应和500来传递或拒绝进一步的请求。

HAproxy将无法知道最终用户和其中一台服务器之间的延迟是什么,因为ping需要在这两方之间执行。

你可以做的就是设置geodns,这样在欧洲分配的IP就会被发送到你的欧洲位置,南美的被发送到你的德克萨斯的位置,等等。