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

有没有一种方法来本地化DNS条目? 意思是说,来自亚洲的用户将mydomain.comparsing为另一个不是来自美国或欧洲的用户。 这将有助于给用户附近的服务器。 DNS是目前使用的唯一技术,这意味着我不能放置一些软件路由或中央系统replaceDNS来解决这个问题。

是的,目前有两种stream行的解决scheme来解决这个问题。

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

你可以在这里http://en.wikipedia.org/wiki/Anycast了解更多

第二种技术再次涉及到AnyCast,但是这一次,IP地址范围是由我们的名字服务器本身来确定的。 由于域名服务器只会向客户发送最近的请求(由BGP的魔力决定),他们本身可以返回逻辑上本地到客户端的IP地址。

这方面的一个例子是谷歌的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 

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

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

使用DNS,您可以使用类似Split-Horizo​​n DNS方法,这可以通过您的DNS服务器(他们可能称之为GeoDNS )的集成function来实现,或通过防火墙将不同的IP地址范围redirect到不同的运行您的DNS服务器的实例(您可以在本地计算机上运行多个不同的服务器副本,这些副本将在不同的本地IP地址上进行监听)。

通过答复来自RIPE的 DNS请求和AfriNIC IP地址,您的主机在欧洲有一个Alogging,来自亚洲的APNIC主机的请求以及来自IP地址的请求,您可能可以获得大约90%的预期结果由ARIN ,LACNICpipe理的/ 8块和/ 8地址空间的其余部分与您在北美的服务器的Alogging。 这在某些情况下会有一些错误的结果(欧洲和北美之间共有8个块,某些地址空间是任播等),但是最坏的情况是受影响的一方会有一些额外的延迟,所以,没什么大不了的。

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

我有同样的问题。 我们公司在俄罗斯和中国都有客户,他们都需要非常快速的连接我们的服务。 我们使用了Amazon Route 53 Geo DNS,并创build了两个logging,一个将来自中国的客户路由到我们的东京地区集群,以及从俄罗斯到伦敦的客户。