如何使用 DNS 将访问者发送到最近的服务器?

如何使用 DNS 将访问者发送到最近的服务器?

有没有办法本地化 DNS 条目?这意味着来自亚洲的用户将 mydomain.com 解析为另一个 IP,而不是来自美国或欧洲的用户。这将有助于为用户提供附近的服务器。DNS 是迄今为止唯一使用的技术,这意味着我无法放置一些软件路由或中央系统来替代 DNS 来解决这个问题。

答案1

是的,目前有两种流行的解决方案可以解决这个问题。

第一种称为Anycast,其中同一个 IP 块实际上在世界多个位置使用。也就是说,您的域名的名称服务器始终返回相同的 IP 地址,但该 IP 地址实际上分配给了多组物理服务器。

你可以在这里读更多关于它的内容http://en.wikipedia.org/wiki/Anycast

第二种技术再次涉及 AnyCast,但这一次,被任播的 IP 地址范围指的是我们的名称服务器本身。因为名称服务器只会向他们所属的客户端发出请求最近同样(由 BGP 的魔力决定),它们自己可以返回逻辑上本地于客户端的 IP 地址。

例如,google 的 l.google.com 域名

来自澳大利亚的房东

crimson:~ dave$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com is an alias for www-notmumbai.l.google.com.
www-notmumbai.l.google.com has address 66.249.89.99
www-notmumbai.l.google.com has address 66.249.89.147
www-notmumbai.l.google.com has address 66.249.89.103
www-notmumbai.l.google.com has address 66.249.89.104

来自美国的房东

[dave@odessa ~]$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.95.99
www.l.google.com has address 74.125.95.147
www.l.google.com has address 74.125.95.104
www.l.google.com has address 74.125.95.106
www.l.google.com has address 74.125.95.105
www.l.google.com has address 74.125.95.103

因此,的 CNAMEwww.google.com解析为www.l.google.com,但当您解析该地址时,根据您的位置,您的客户端会收到一组不同的 IP 地址。这是因为接收 请求的名称服务器www.l.google.com当地的名称服务器,相对于客户端。

答案2

我也遇到了同样的问题。我们公司在俄罗斯和中国都有客户,他们都需要非常快速地连接到我们的服务。我们使用了 Amazon Route 53 Geo DNS,并创建了两条记录,一条将中国客户路由到我们的东京区域集群,另一条将俄罗斯客户路由到伦敦。

答案3

如果您只想为亚洲、北美和欧洲本地化服务器,那么您可以决定自己运行您的 web 应用程序和 DNS。

使用 DNS,您可以使用类似水平分割 DNS方法,可以通过 DNS 服务器的集成功能来实现(他们可能称之为地理域名解析)或通过防火墙这会将不同的 IP 地址范围重定向到 DNS 服务器的不同运行实例(您可以在本地机器上运行该服务器的多个不同副本,它们将监听不同的本地 IP 地址)。

通过回复 DNS 请求,您可能在 ≈90% 的情况下获得预期的结果成熟以及 AfriNIC IP 地址,其中包含A您在欧洲的主机记录,来自亚太互联网络信息中心— 位于亚洲的主机,以及来自以下 IP 地址的请求:/8管理的区块艾林、LACNIC 和其余 /8 地址空间,其中包含A您在北美的服务器记录。在某些情况下,这会产生一些错误的结果(一些 /8 块在欧洲和北美之间共享,一些地址空间是任播的等等),但最糟糕的情况是受影响方会有一些额外的延迟,所以,这应该不是什么大问题。

(是的,应该有办法让这些事情变得更容易,但是到目前为止,似乎还没有。)

相关内容