像CDN一样如何做区域DNS?


15

我想这个问题可能很有趣,CDN在DNS级别上如何工作,但我真正的问题是我的公司在三大洲都设有数据中心,我们必须有europe.example.com us.example.com和asia.example .com

CDN通常会根据您的IP地址将您发送到本地数据中心。这一定是DNS事物,您在美国拥有DNS服务器会将您发送到美国数据中心以进行相同的example.com DNS查找?

我错了吗?如果我对此有误,如何在没有中央(非DNS)服务器的情况下有效地做到这一点?


Answers:


12

CDN的麻烦在于它们不会根据您自己的IP地址来定向您-它们会根据您的DNS服务器的IP地址来定向您...这可能是完全错误的。并阅读Paul Vixie的ACM文章,这真是物超所值。

无论如何,如果已经region.example.com设置并运行,则可以考虑example.com根据客户端的IP地址进行HTTP重定向到相关的Web服务器。

那几乎就是Google所做的,这就是我最终google.co.uk输入的方式google.com

还请确保尽管您为客户提供了一种获取其他变化的方式。当客户被迫访问某个特定站点时,无论是由于地理数据库中的错误还是仅仅是因为他们实际上确实需要从其他地区查看该站点,他们都不喜欢它。


5

较新的CDN(Cloudflare,MaxCDN,fast.ly)对DNS和实际内容服务器都使用任播。这比尝试使用DNS查询的源IP和不断变化的映射数据库要好一些。

从理论上讲,对DNS和内容服务器都使用任播,网络本身就可以找到客户端的“最近”服务器。实际上,大多数情况下都是如此,但是由于ISP之间的对等关系不断变化,新加坡的人们将访问加利福尼亚而不是香港的边缘服务器,这是一些奇怪的情况。

Anycast 很难做好

像Akamai和Limelight这样的较老的CDN通常使用Anycast将您带到最近的DNS服务器,但随后采取基于源IP猜测的方法。根据我的经验,这种方法不太适用,尤其是如果客户端使用的DNS服务器在网络拓扑方面实际上并不在附近。但是,像Akamai这样的庞大的已建立CDN具有数百个内容服务器位置,因此返回“足够接近”的答案会带来不错的用户体验。显然,拥有数百个站点非常昂贵,这就是为什么所有广播CDN都没有选择该路由的原因。因此,对于大多数同等服务,他们也不收取太多费用。


1

有很多方法可以解决此问题,但是它们都归结为找出IP地址在哪里,并相应地指出它。例如,您可以为北美指定一个IP范围,为欧洲指定一个IP。如果请求信息的IP(从DNS,您的Web服务器,您的内容服务器等)属于欧洲范围,则您的欧洲服务器应会收到请求。


本,你是什么意思?您是说我在美国有一个DNS服务器,例如在英国有一个。当我想到DNS时,我只设置了A记录就完成了。如何按地区指定这些DNS服务器?
斯图尔特·罗宾逊

我相信他指的是绑定中的视图。您可以在DNS内部设置不同的视图,这些视图根据客户端的IP地址进行匹配,该IP地址可以粗略地标识为属于某个地理区域。您可以通过许多服务将请求通过管道传递到API并从中获取位置。简要浏览一下,您可以尝试使用hostip.info/dl/index.html以获得较低/免费的选项。
Greeblesnort

我晚上浏览时碰巧碰到了这个问题:blogs.techrepublic.com.com/networking/…–
Greeblesnort

@Stewart-不,您不会在每个区域运行一台DNS服务器。是的,您可以,但是那是为了冗余,因为DNS系统本身是空白的。@greeblesnort的答案几乎和他的名字一样好。:-)
Ben Doom

0

您可以在example.com上设置默认主页。某人第一次访问时,他们选择要将他们定向到的区域。这与www.ups.com的工作方式相同。

从那时起,用户可以选择一个复选框以将此作为他/她的默认选择,从而将选择存储在cookie中。

这使您受益于以Paul Vixie所设计的方式使用DNS,同时允许您的用户对应该将其定向到哪个数据中心做出最准确的决定。


0

如果您的网站托管在多个区域,则无需在DNS级别进行任何操作。您可以使用诸如http://ipinfo.io之类的API 来获取访问者的国家/地区,然后将其重定向到相应的URL。

如果我们不是在谈论网站或处理重定向的任何协议,则在DNS级别上有一些选择。您可以执行相同的IP国家/地区查询,然后返回与该区域匹配的记录(基于地理位置的DNS),或者可以绘制不同网络之间的延迟映射,并返回代表用户最低延迟的记录(延迟基于DNS)。亚马逊的Route53 DNS服务同时提供。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.