我从未有幸在需要复杂路由的环境中工作,或者如果确实需要,它会在我的上游处理。我一直使用非常简单的静态路由配置,从不需要进行任何多路径路由——因此我对这个主题普遍感到困惑。我想更好地了解多播和任播。
直到几秒钟前,当我读到“有哪些很酷或有用的服务器/网络技巧? ”时,我才听说过任播。
维基百科关于它的“任播”文章非常正式,并没有真正唤起如何使用它的心理图景。
有人可以用几个非正式的句子解释什么是“任播”,如何配置它(只是一般意义上的),以及它的好处是什么(它让什么变得更容易)?
指向同一个域的多个 A 记录似乎几乎专门用于将 DNS 轮询作为一种廉价的负载平衡技术来实现。
针对 DNS RR 的常见警告是它不利于高可用性。当 1 个 IP 出现故障时,客户端将继续使用它几分钟。
通常建议使用负载平衡器作为更好的选择。
这两种说法都不完全正确:
当流量为 HTTP 时,大多数 HTML 浏览器能够自动尝试下一条 A 记录(如果前一条记录出现故障),而无需进行新的 DNS 查找。阅读此章节3.1和这里。
当涉及多个数据中心时,DNS RR 是在它们之间分配流量的唯一选择。
那么,对于多个数据中心和 HTTP 流量,使用 DNS RR 是确保在一个数据中心出现故障时立即进行故障转移的唯一方法吗?
谢谢,
华伦天奴
编辑:
编辑2:
为了我的求知欲,我试图了解像 Facebook 或 Wikipedia 这样的大型网站是如何运作的。我阅读了构建可扩展站点的各种技术,但我仍然对一个特定的细节感到困惑。
让我困惑的部分是,最终,DNS 会将整个域映射到单个 IP 地址,或者在循环 DNS 的情况下映射到少数 IP 地址。
例如,wikipedia.org 只有一个 A 类 DNS 记录。因此,来自世界各地的访问维基百科的人必须向 DNS 中指定的一个 IP 地址发送请求。
侦听大型站点的 IP 地址的硬件是什么,它如何处理来自世界各地用户请求的所有负载?
编辑 1:感谢所有回复!任播似乎是一个可行的答案......有谁知道一种检查特定 IP 地址是否是任播路由的方法,以便我可以验证这确实是大型站点在实践中使用的技巧?
编辑 2:在对该主题进行更多阅读后,似乎任播通常不用于动态 Web 内容。任播通常用于 UDP(例如,DNS 查找),或有时用于静态内容。
需要注意的一件有趣的事情是 Facebook 使用 profile.ak.fbcdn.net 来托管静态内容,如样式表和 javascript 库。每次 ping 这个名字时,我都会收到来自不同 IP 地址的响应。但是,我不知道这是正在使用的任播还是完全不同的技术。
回到我最初的问题:据我所知,即使是大型站点也会有一个昂贵的负载平衡硬件来监听其少数公共 IP 地址。
所以,关于 SF 有很多关于使用和任播 IP 很酷的问题。我的方法更实用。要使用这些地址之一,我特别需要什么?
基本上,如果我想使用 Anycast IP 地址,我到底需要什么,从设备到配置部分。
根据维基百科对Anycast 的描述,它既包括跨多个 DNS 服务器的域名到多 IP 映射的分布,也包括使用地理位置最接近(或最快)的服务器回复客户端。
在像 google.com 这样的全球分布、高度可用的站点(或具有许多全球边缘位置的任何 CDN 服务)的上下文中,这听起来像是人们需要的两个关键功能。
亚马逊的 Route53、EasyDNS 和 DNSMadeEasy 等 DNS 服务都宣称自己是支持 Anycast 的网络。
因此,我的假设是,这些 DNS 服务中的每一个都透明地为我提供了这两个杀手级功能:多 IP 到域的映射和将客户端路由到最近的节点。
然而,这些服务中的每一个似乎都将这两个功能分开,将第二个(将客户端路由到最近的节点)称为“GeoDNS”、“GeoIP”或“全球交通指挥”,并为该服务收取额外费用。
如果支持任播的系统的核心租户已经这样做了,为什么要将此功能指定为此额外功能?这个“GeoDNS”功能是什么,标准 Anycast DNS 服务不会做(根据 Wikipedia 中 Anycast 的定义——我理解正在宣传的内容,只是不知道为什么它没有被暗示)。
当不支持这种模糊的“GeoDNS”功能的 Route53 等 DNS 服务列出的功能如下时,我感到非常困惑:
快速 – Route 53 使用全球 DNS 服务器的全球任播网络,旨在根据网络状况自动将您的用户路由到最佳位置。因此,该服务为您的最终用户提供低查询延迟,并为您的 DNS 记录管理需求提供低更新延迟。
...这听起来与 GeoDNS 的意图完全一样,但地理定向客户是他们明确不支持的事情。
最终,我正在从 DNS 提供商那里寻找以下两个功能:
如前所述,这似乎是“任播”DNS 服务(所有这些服务都是)的一部分,但我从他们那里看到的功能和营销表明并非如此,让我觉得我需要更多地了解如何DNS 在做出部署选择之前起作用。
提前感谢您的任何澄清。
domain-name-system high-availability anycast geodns amazon-route53
我的理解是,公共 IP 块是从IANA分配的,它将子块分配给RIR,将子块分配给 ISP,将子块分配给各个AS,如以下问题所述:IP 地址实际上是如何分配的?
这(以及本页之类的资源)似乎意味着 1 个公共 IP 到 1 个 AS 的映射。
然而,任播似乎是通过从多个位置广告相同的公共 IP 地址来工作的,提供到该 IP 的不同路径。例如:
如果公共 ip 应该解析为单个 AS,则任播如何工作?
首先是一些背景知识:我们有一个实验室,其中包含一些运行在隔离 LAN 上的专用 Linux 服务器。所有服务器运行相同的操作系统 (Debian Linux) 和相同的专有服务器软件,服务器进程相互通信以保持数据同步。这意味着就任何客户端而言,客户端连接到哪个服务器并不重要——任何服务器都将返回与其他任何服务器相同的数据。
这些 Linux 服务器都运行 avahi-daemon 来为自己发布 mDNS 主机名,这意味着客户端可以输入例如“ http://linux-server-1.local”。进入他的 Web 浏览器并连接到 Linux 服务器 #1,依此类推。
这一切都很好,只是这意味着坐在客户端机器上的用户(通常是安装了 Bonjour 的 Mac 或 Windows 笔记本电脑)必须知道(或弄清楚)哪些 Linux 服务器当前在线,并且他必须确保他连接到其中之一。例如,如果服务器#2 今天离线,并且客户端输入“ http://linux-server-2.local”。进入他的网址栏,他不会得到回应。当然,这不是世界末日,但对于希望一切“正常工作”的新手用户来说,这很烦人,而且它还使健壮的客户端脚本的开发变得更加复杂(因为客户端脚本需要知道如何明确处理离线服务器)。
考虑到这一点,我的问题是:是否可以配置 Avahi 来发布任播风格的 mDNS 主机名别名?目标是任何人都可以坐在他的笔记本电脑上,输入“ http://any-linux-server.local”。(或类似的),并连接到当前在线的服务器之一(同样,哪个服务器无关紧要)。
请注意,这需要在客户端笔记本电脑没有任何特殊配置的情况下工作,因为我们无法控制它们(除了需要安装 Bonjour 之外)。
另请注意,我们不能依赖单独的名称服务器或代理框的存在,或依赖任何特定 Linux 服务器的存在,因为这会引入我们试图避免的单点故障。
RFC 1034要求我们为 DNS 服务器分配至少两个 IP 地址。但是,如果我们使用任播寻址,就可以通过单个 IP 地址实现冗余。BGP 任播似乎可以很好地扩展到数百甚至数千台服务器。
如果是这样,为什么我们仍然需要多个 IP 地址用于 DNS 服务器?如果我们已经有了任播,它是否真的增强了冗余(有助于提高可用性),还是只是一个神话?
如果我们只使用一个 IP 地址,我们预计会面临哪些问题和错误?
我的意思是完全省略辅助 DNS 地址,或者1.2.3.4当某些设置需要至少两个地址时,使用虚假 IP(例如)作为第二个地址。
我想为我的网络服务进行任播,但我找不到任何关于如何实现这一目标的信息或任何可以提供帮助的公司。
我发现有很多公司提供任播 DNS,但这不是我需要的。
我有一个无状态的 Web 服务,我想在地理上分发它,使用任播来平衡负载并增加正常运行时间。公司是否有任何技术原因不能只为我在多个数据中心宣传 IP 地址?
为了评估现有产品并帮助我找到可以帮助我的公司,我需要了解有关任播的哪些技术方面的知识?我需要注意哪些陷阱?