辅助地址如何使用?是否特定于应用程序?
注意:我不是在问循环 DNS。循环 DNS 可以通过一次仅返回 1 个地址来实现。
答案1
我相信这是循环 DNS。DNS 服务器返回与该 A 记录匹配的所有服务的 IP。由客户端/浏览器决定使用哪个 IP。
答案2
如果客户端无法连接到第一个 IP 地址,它可以尝试连接到列表中的下一个 IP 地址(如果提供了多个 IP 地址)。您可以将其视为一种“廉价”容错解决方案。并且地址的顺序被改变(循环),因此它也可以用作“廉价”负载平衡。
答案3
首先,DNS 协议的设计与实际存储在其中的数据无关。有许多记录类型确实需要多个答案,例如 MX(邮件服务器s) 和 NS (名称服务器) 记录。一般来说,如果您运行的网站不错并且有冗余,则应该始终拥有多个此类记录。
然而,对于地址,有时人们喜欢返回多个记录。DNS 规范规定,如果您获得多个记录,理想情况下应该“随机选择一个”。这对于在多台机器上分散负载非常有帮助,尽管在实践中它并不像您希望的那样理想,这就是为什么更常见的做法是基于 IP 的负载平衡器,而不是使用多个答案。因此,多个 A 或多个 AAAA(IPv6)的使用率比以前要低。
但请记住:DNS 协议的设计初衷并不关心它所承载的数据。即使对最终应用程序没有用处,它也会很乐意提供特定类型的多条记录。
答案4
我知道这是一个老问题,但我偶然发现了它,并想发表一下我的看法。请反驳,因为我喜欢听别人的观点。
使用多个 DNS 条目是一种容错形式,但我并不总是认为它是一种“廉价”形式。只有当这是您的高可用性 (HA) 总体计划时,它才廉价。如果您想要构建高可用性架构,您还需要其他机制,例如跨区域和地区进行集群。一旦开始对基础设施进行集群,您将固有地需要某种位于集群前面的负载平衡设备。为了使您的负载均衡器高可用并防止单点故障 (SPF),您还需要对负载均衡器进行集群。问题就在这里,多个 DNS 记录解决了一个非常现实的问题。一旦对负载均衡器进行集群,就没有真正的方法可以使您的系统高可用,除非引入另一种机制,远离纯 TCP/IP 和路由。这就是多个 DNS 记录解决问题的地方。
如果您拥有一个域名(www.example.com)并且您正在尝试使其具有高可用性,并且您最终将所有基础架构聚集到多个区域和可用区域,并且花时间实施负载平衡集群,您将需要将您的域指向负载均衡器集群中的所有负载平衡端点。(即返回多个 DNS A 记录)
这样,每次客户端请求 www.example.com 时,他们都会得到 2 个或更多 IP 地址。如果第一个成功,则会使用它,但如果失败,则会改用第二个 IP 地址(或第三个或第四个等)。这些初始 IP 地址是您的负载均衡器的 IP 地址。然后,它会将您的请求相应地路由到集群。