基于邻近度的负载平衡

时间:2008-11-28 11:17:17

标签: networking load-balancing

我正在研究一个项目,因为我们有遍布全球的服务器号码(目前有5个)。 客户端通过集中式代理连接到其中一个服务器。 我们知道客户的原始国家,但没有别的。我们完全控制服务器,因此我们可以获得所需的所有信息。 我们不控制客户,他们必须按照标准连接这个经纪人。

经纪人选择具有低延迟的服务器非常重要,因此我们认为接近度是我们唯一可用的标准。

首先想到的是从每个服务器ping客户端,但我们没有ip,只有国家。

我们的其他想法是从每个服务器ping每个国家/地区的根节点。问题是在每个国家都找到了一个根节点。

您是否知道如何计算/查找“国家/地区”之间的距离? 您对如何以其他方式解决此问题有任何见解或想法吗?

7 个答案:

答案 0 :(得分:7)

这很棘手,比许多人想象的要多,但我觉得有一个正确的答案。

当然,天真(但很酷)的解决方案是检查客户端的IP,这是一个良好的开端,但在“现实世界”中地理位置不是一切 ......

您刚刚要求“低延迟”,这意味着您应该在服务器和客户端之间执行 ping 并相应地进行分配。我个人多次影响这个问题的一个很好的例子就是我在日本工作,台湾的服务器说我在美国的服务器很多。 但是,日本和美国之间的延迟比台湾的延迟少很多(更好的响应),因为电缆和路由器以及连接的东西日本 - 台湾不如日本 - 美国之间的那些好。因此,如果你把我与台湾联系起来,因为你认为我的知识产权更接近,你就会在那里做一个非常不喜欢。除了ping和启动时的实际小测试比保留一些不断更新的Geolocation数据库

更容易

答案 1 :(得分:5)

我认为您需要的术语是“地理负载平衡”。大多数主要的负载平衡供应商都有一个解决方案 - 您的经纪人可以使用这些解决方案。

谷歌搜索geographic load balancing获得了一些有用的结果。

答案 2 :(得分:1)

保罗拥有它,你想要地理负载平衡 - 但我要补充一点,你最好的选择,如果它是一个选项,就是找到一个专门研究并向他们投钱的人。它出现的问题类别很多难以可靠地解决,而不是第一次出现。

答案 3 :(得分:1)

Ping它们并选择延迟最低的那个听起来不错,但我觉得它不会扩展(当你有100或1000时会发生什么?) - 所以也许另一个解决方案更好?那里有很多供应商都有这样的系统; DNS任播也被广泛使用。

如果你只是ping它们,你需要对每个ping(理想情况下是并行)进行多次ping操作,以确保你选择一个具有真正低延迟而不是运气的人。

另外,当流量非常高时,你可能想要一些方法来增加权重。

最后你想要一些方法来将它们中的一些标记为管理上的(用于维护) - 但也许你可以通过让你的破坏而不是宣传当前不可用的那些来做到这一点。

答案 4 :(得分:1)

Ping不起作用。大多数客户端将位于网关和/或防火墙之后,您的ping数据包将无法通过。 Genehack说得最好。您需要服务器负载平衡,并且仅使用地理方法可能不是最好的方法。最好向专门提供SLB解决方案的人投钱。

答案 5 :(得分:1)

好的,快几点思考。我是Digital Envoy的创始人 - 他们从事地理知识产权情报工作。几年前我离开了公司,但大约6年前,我们built a joint productCoyote Point Systems完成了这项功能 - 基于地理的负载平衡。当然,有一些边缘情况(这个线程中提到的台湾/中国示例)可能无法自动运行,但该产品允许用户确定一个国家的流量将去往何处。因此,如果你认为台湾最好是在美国以外的地方服务,那就会被这样推动。

不幸的是,对解决方案的需求并不像我们希望的那么大,我相信该产品已停产。我建议contacting Coyote Point,看看他们是否可以为您提供等效的解决方案。如果没有,我认为他们会对如何做你想做的事情有一些想法。

根据您需要提供的服务,另一个选择是使用亚马逊的CloudFront服务。当然,如果您需要客户端连接到应用程序而不是静态文件,那么这对您无效。

BTW,full disclosure - 我不仅是数字特使的创始人,而且我现在是Coyote Point的董事会成员。

答案 6 :(得分:1)

最佳解决方案称为 BGP任播link to a presentation)。它是所有现代CDN的基石。

使用 BGP任播,多个不同的服务器遍布全球,并使用相同的IP 通过BGP向Internet公布。然后互联网发挥了作用 - 像往常一样,网络通过最短路径路由到相同IP 的流量,实质上是为每个用户选择最近的服务器(从网络拓扑角度来看)。

不幸的是,你不能自己通过BGP宣布任何东西 - 只有大型网络(通常是数据中心)可以做到这一点。但是价格合理的解决方案是可用的,其中大部分是基于 DNS任播(即根据客户端位置解析到不同的Web服务器IP) - 这不是很完美,但在很多情况下已经足够了(例如:dnsmadeeasy ,Route 53,edgedirector,几乎每个廉价的CDN - cloudflare,maxcdn,cloudfront等)。还有一些解决方案可以进行真正的BGP任播,即实际通过任播(例如cachefly)提供HTTP流量或允许你这样做(例如hostvirtual - 并不便宜)。 This也可能是一本有趣的读物。