我想这个问题可能是有道理的,CDN在DNS层面上的工作如何,但是我真正的问题是我的公司在三大洲有数据中心,我们必须有europe.example.com us.example.com和asia.example .COM
CDN通常会根据您的IP地址将您发送到本地数据中心。 这必须是一个DNS的东西,你有在美国的DNS服务器发送到美国的数据中心为同一个example.com的DNS查找?
我错了吗? 如果我错了,我怎么能有效地做到这一点,如果没有中央(非DNS)服务器,如果可能的话?
CDN的麻烦在于,它们不会根据您自己的IP地址来指导您 – 它们会根据您的DNS服务器的IP地址来引导您…这可能是完全错误的。 并阅读保罗·维克西的ACM文章 ,这是钱。
无论如何,如果您已经设置并运行了region.example.com
,则可以考虑根据客户端的IP地址从example.com
向相关的Web服务器执行HTTPredirect。
这几乎是Google所做的,就是在google.co.uk
上inputgoogle.com
。
也要确保你提供了一种方法让客户去其他的变化。 客户不喜欢它们,当他们被迫到一个特定的网站,无论是在地理数据库的错误,或者仅仅是因为他们实际上需要从另一个地区看到的网站。
较新的CDN(Cloudflare,MaxCDN,fast.ly)对DNS和实际内容服务器都使用任播。 这比尝试使用DNS查询的源IP和不断变化的映射数据库要好一些。
从理论上讲,DNS和内容服务器都使用Anycast,networking本身可以find客户端的“最近的”服务器。 实际上,情况大致如此,但是一些奇怪的情况出现在新加坡的人们将在加利福尼亚而不是香港的边缘服务器上,这是由于ISP之间不断变化的对等关系。
任播很难做好。 有关更多信息,请参阅https://www.maxcdn.com/blog/anycast-ip-routing-used-maxcdn/ 。
像Akamai和Limelight这样的较老的CDN通常使用Anycast来使您到达最近的DNS服务器,然后采用基于猜测的源IP方法。 根据我的经验,这不起作用,特别是如果客户端使用的DNS服务器在networking拓扑方面实际上并不近似。 但是,像Akamai这样巨大的CDNnetworking拥有数百个内容服务器位置,因此,返回“足够接近”的答案会带来体面的用户体验。 显然,拥有数百个网站是非常昂贵的,这就是为什么全民CDN没有select这个路线。 因此,对于大多数同等的服务,他们也不会收取太多的费用。
有很多方法可以解决这个问题,但是他们都是要搞清楚IP地址在哪里,然后相应地指出。 例如,您可以为北美和欧洲指定一个IP地址范围。 如果请求信息的IP(来自DNS,您的networking服务器,您的内容服务器等)属于欧洲范围,则您的欧洲服务器应该收到请求。
您可以在example.com上设置默认主页面。 第一次有人访问他们select他们想要被引导的区域。 这与www.ups.com的工作原理是一样的。
用户可以select一个checkbox,使其成为他/她从此时开始的默认select,从而将select存储在cookie中。
根据Paul Vixie的说法,这样可以让您以使用DNS的方式使用DNS,同时允许您的用户做出最准确的数据中心分析。
如果您的网站托pipe在多个地区,则无需在DNS级别上进行任何操作。 您可以使用API(如http://ipinfo.io)来获取访问者的国家,然后将其redirect到相应的URL。
如果我们不是在谈论网站或任何处理redirect的协议,那么在DNS级别上有几个选项。 您可以执行相同的IP国家/地区查找,然后返回与该区域匹配的logging(基于地理定位的DNS),或者可以在不同networking之间有一个延迟映射,并返回代表用户最低延迟的logging(延迟基于DNS的)。 亚马逊的Route53 DNS服务同时提供。