应用程序如何管理具有 2 个或更多 IP 地址的 DNS 记录?

应用程序如何管理具有 2 个或更多 IP 地址的 DNS 记录?

我有几个具有 2 个或更多 IP 地址的 DNS 记录,例如,我们的电子邮件服务器的 A 记录是“mail.example.com”并有 2 个 IP 地址:

mail.example.com  1.2.3.4
mail.example.com  2.3.4.5

每个 IP 地址都属于不同的 ISP。有时,当其中一个 IP 不可用时,用户计算机上的某些应用程序(如 Outlook)只会使用从 DNS 服务器收到的 A 记录中的第一个 IP 地址,即使 Outlook 收到了 2 个 IP,也不会尝试使用其他 IP。我也在其他应用程序中看到了这种情况。当我运行“ipconfig /displaydns”时,我看到 DNS 已为 A 记录提供了 2 个 IP,但应用程序只使用第一个。

我们使用 Amazon Route 53 来管理 DNS,为了解决这个问题,我使用“健康检查”,然后根据 IP 的可用性使用 DNS 响应。

我的问题是,应用程序仅使用在 DNS 记录中找到的第一个 IP 地址是否正常? 是否有其他方法可以让应用程序在给定 DNS 记录上的 IP 之间交替,或者此行为取决于应用程序?

答案1

我的问题是,应用程序仅使用在 DNS 记录上找到的第一个 IP 地址是否正常?

是的。许多应用程序在将主机名解析为数字地址时都会返回单个地址。某些应用程序(例如 Web 浏览器)会提取完整的记录列表,并在失败时按顺序尝试。

有没有其他方法可以让应用程序在给定 DNS 记录上的 IP 之间交替,或者这种行为取决于应用程序?

不,这需要由名称服务器处理。即使使用循环法,也存在解析器返回的第一个 IP 地址不是通过用于查找的方法返回给应用程序的第一个 IP 地址的情况。

答案2

当然,DNS的目的是获取IP地址。作为应用程序开发人员,我使用第二个A或AAAA记录的唯一原因是,如果我无法使用第一个记录连接到端点。

如果您想要进行负载平衡,则必须考虑到该“普通”行为,并让您的 DNS 服务器相应地优先考虑 A 或 AAAA 记录。

相关内容