根据用户的位置将用户重定向到最近的服务器而不更改 url

Posted

技术标签:

【中文标题】根据用户的位置将用户重定向到最近的服务器而不更改 url【英文标题】:Redirect users to the nearest server based on their location without changing url 【发布时间】:2012-02-26 15:47:38 【问题描述】:

这是我的情况:

我在美国和欧洲有 6 台服务器。所有服务器都在负载平衡器上。当您访问该网站 (www.example.com) 时,它指向负载均衡器 IP 地址,并且您会从它们重定向到其中一台服务器。目前,例如,如果您从德国访问该网站,您将被随机转移到其中一台服务器中。你可以转移到德国服务器或者旧金山的服务器。

我正在寻找一种方法,可以根据用户的位置将用户重定向到最近的服务器,但不更改 url。所以我希望拥有许多网址,例如 www.example.com、www.example.co.uk、www.example.dk 等

我正在寻找类似 CDN 的东西,您可以在其中从最近的服务器检索文件 (?),这样我就可以摆脱负载均衡器,因为如果它崩溃,网站不会响应 (?)

例如:

如果您来自英国,请重定向到 IP 53.235.xx.xxx 如果您来自我们西部,请重定向到 IP .... 如果您来自南欧,请重定向到 IP ...等

DNSMadeeasy 提供与此类似的功能,但他们收取 600 美元的预付款,并且对于不知道该功能是否会按预期工作或没有我们负担不起的试用版的初创公司:http://www.dnsmadeeasy.com/enterprise-dns/global-traffic-director/

还有什么方法可以做到这一点?

还有一个关于当前设置的问题。即使有 6 台服务器都连接到负载均衡器,如果负载均衡器有延迟问题,它会带走一切,对吧?或者,如果由于任何更改而出现故障,则网站不会响应。那么消除停机时间的最佳方法是什么,以便如果一个服务器 IP 地址没有响应,则转到下一个(负载均衡器会这样做,但负载均衡器本身可能会出现问题)

【问题讨论】:

GeoDNS 是我正在寻找的。但我认为他们可以自己做吗?我不确定那家公司是否可靠或安全。 我在上面发布的 caraytech.com/geodns 实际上可以让您自己免费完成。您需要 BIND (isc.org/sw/bind) 和补丁,caraytech.com/geodns/bind-9.4.1-geodns-patch.tar.gz 请参阅 caraytech 网站以获取说明。 我在找什么!我不知道我有什么关系。从未使用过绑定。要开始读了谢谢 你对我的第二个问题有什么想法吗? (最后一段) 您的第二个问题:负载均衡器可能是基于 DNS 的,也可能是基于代理的。您的案例需要基于 DNS 的负载均衡器。现在,无论您从哪个国家/地区访问,客户端始终必须首先与您的 DNS 服务器通信,该服务器可能位于世界的另一端。现在,您可以从日本到俄亥俄州获得缓慢的 ping 时间。这只是一个快速查找,它不应该有所作为。如果您的 DNS 出现故障,您的整个站点就会出现故障。 (这就是为什么我们轮询 DNS 服务器以及“A 记录”。)如何设置 BIND:ubuntuforums.org/showthread.php?t=236093 【参考方案1】:

有助于了解您在谈论什么类型的应用程序服务器;即 J2EE(如 JBoss/Tomcat)、IIS 等?

您可以使用具有粘性 IP 的硬件或软件负载平衡器,并定义 IP 范围以固定到不同的应用程序服务器。每个国家的 ISP 都应该有自己的 IP 块。

下面的网站上有一个列表。

http://www.nirsoft.net/countryip/

这里还有一篇关于一般负载平衡的非常非常好的文章,解决了许多高可用性/持久性问题。这应该回答您关于负载均衡器单点故障的第二个问题;有许多不同的技术可以同时提供高可用性和负载分布。很大程度上取决于您运行的应用程序类型以及您是否需要持久会话。通过粘性 IP 进行负载平衡,如果不需要持久性并且您的 LB 正确地进行了健康检查,则可以提供高可用性和轻松的故障转移。缺点是负载分布不均匀,但您似乎正在寻找基于邻近度而不是负载的分布。

http://1wt.eu/articles/2006_lb/index.html

【讨论】:

我的服务器从一系列云服务器到 VPS 服务器。如果有帮助,全部都在 Debian 5.0 lenny 上?我从您的回答中了解到,用户仍然必须到达物理上位于一个位置的负载均衡器。这将使用户无论何时都可以访问该位置,这不是我想要的。我认为最快的选择是由 DNS 本身制作?

以上是关于根据用户的位置将用户重定向到最近的服务器而不更改 url的主要内容,如果未能解决你的问题,请参考以下文章

根据IP将用户重定向到子域

如何根据用户的状态位置将用户重定向到不同的 index.php 页面

使用 Javascript 和 AJAX 将用户重定向到最近和最快的 Web 服务器?

根据地理位置在首次访问时重定向用户

在 Bootstrap 中,如何使用模态重定向到一个部分(而不重定向到打开模态的位置)

如何根据 PHP 中的会话数据将用户重定向到不同的页面?