根据维基百科的描述任播,它包括跨多台 DNS 服务器分发域名到多 IP 映射,以及使用地理位置最接近(或最快)的服务器回复客户端。
在像 google.com 这样的全球分布、高可用性网站(或任何具有许多全球边缘位置的 CDN 服务)的背景下,这听起来像是人们所需要的两个关键功能。
亚马逊的 Route53、EasyDNS 和 DNSMadeEasy 等 DNS 服务都将自己宣传为支持 Anycast 的网络。
因此,我的假设是,这些 DNS 服务中的每一个都透明地为我提供这两个杀手级功能:多 IP 到域映射和将客户端路由到最近的节点。
然而,这些服务似乎都将这两个功能分开,将第二个功能(将客户端路由到最近的节点)称为“GeoDNS”,“GeoIP”或“Global Traffic Director”,并对服务收取额外费用。
如果支持 Anycast 的系统的核心租户已经这样做了,为什么将此功能指定为这个额外功能?这个“GeoDNS”功能可以做什么,而标准 Anycast DNS 服务无法做到(根据 Wikipedia 中 Anycast 的定义 - 我理解广告宣传的内容,但不知道为什么它还没有被暗示)。
当像 Route53 这样的 DNS 服务不支持这个模糊的“GeoDNS”功能时,我会特别困惑,因为它列出了如下功能:
快速 – Route 53 使用遍布全球的 DNS 服务器全球任播网络,旨在根据网络状况自动将您的用户路由到最佳位置。因此,该服务可为您的最终用户提供较低的查询延迟,并为您的 DNS 记录管理需求提供较低的更新延迟。
... 这听起来就像 GeoDNS 想要做的事情,但地理上引导客户端是他们明确不支持。
最终,我希望 DNS 提供商具备以下两个功能:
- 将多个 IP 地址映射到单个域名(例如 google.com、amazon.com 等)
- 利用 DNS 服务,该服务将使用距离请求者最近的服务器的 IP 地址来响应该域的客户端请求。
如上所述,这似乎都是“Anycast”DNS 服务的一部分(所有这些服务都是如此),但我从它们身上看到的功能和营销表明并非如此,这让我认为我需要在做出部署选择之前更多地了解 DNS 的工作原理。
在此先感谢您的澄清。
答案1
GeoDNS 的主要优点是它根据请求者的 IP 地址将同一个名称解析为不同的 IP 地址。
Anycasted DNS 服务器将返回相同的 IP 地址不论是谁提出这个问题。
两者在不同的网络层工作。Anycast 位于 GeoDNS 之下,因为它不知道请求者 IP 地址的位置,只知道其在网络图中的位置。可能靠近 DNS 服务器的内容可能并不靠近所请求的资源,而Anycasted DNS服务器没有办法分辨这一点。
GeoDNS 使用资源位置图并执行逻辑来确定哪个资源最接近给定的请求 IP 地址,然后返回该 IP 地址。
除非您将 DNS 服务器与网络资源放在一起,否则靠近 DNS 服务器的内容并不总是靠近资源,因此使用 Anycast 作为数据本地性方法的效果不如直接使用 GeoDNS。
答案2
BGP 任播方面允许客户端向给定的 DNS 服务器发送请求,并根据 BGP 路由表将该请求发送到附近的 DNS 服务器实例,希望得到快速响应。
然而,地理分布和任播的普通 DNS 服务器不具备以下能力:根据请求客户端的位置以不同的方式响应查询- 这是那些“Geo-DNS”服务提供的额外功能,需要额外付费,允许您将客户端发送到靠近他们的服务实例。
该功能存在的原因是,BGP 任播对于像 DNS 这样无状态的东西来说工作得很好,它快速而粗糙,不需要连接或会话持久性,但对于像 Web 服务器这样的东西,您希望将实例粘贴到世界各地,并确保给定的客户端将坚持使用特定的实例 - 连接中期全局 BGP 表中的路由更改会破坏 TCP 连接,破坏 Web 应用程序会话,并通常造成严重破坏;由于这个原因,任播通常不用于 Web 服务器。
最好的方法是通过 DNS 为 X 县的用户提供 X 国实例的 IP,这就是您花钱购买 Geo-DNS 服务的原因。
答案3
传统上,您会有多个 DNS 服务器。客户端会随机选择一个,并向其询问您的 Web 服务器的 IP 地址。如果 DNS 服务器靠近客户端,则这种情况很好,但如果 DNS 服务器距离客户端很远(通常情况如此),则情况就不好了。无论哪种情况,客户端都会得到相同的 IP 地址作为答案。
Anycast 允许多个服务器响应同一个 IP 地址。使用 Anycast DNS,当客户端尝试与您的名称服务器通信时,最近/最快的名称服务器会做出响应。这意味着客户端始终会快速响应其 DNS 查询。但是,他仍然会始终获得相同的回答他的 DNS 查询 - 您的服务器的 IP。如果您的服务器距离客户端较远,则客户端体验可能不是最佳的。
GeoDNS 允许 DNS 服务器根据客户端的位置使用不同的 IP 地址进行响应。(显然,这要求您拥有多个地理分布的服务器。)GeoDNS 并不意味着任播,尽管您通常会同时部署两者,以便客户端最终从地理位置附近的 DNS 服务器获得 DNS 查询的答案,然后该服务器使用地理位置附近的 Web 服务器的 IP 地址进行回复。