DNS 循环:多个名称服务器 VS 多个 A 记录?

IMB*_*IMB 4 domain-name-system domain failover high-availability

注意:这是我之前关于 DNS Failover 的问题的后续。

目标:使客户端的 Web 浏览器在服务器立即停机时选择下一个可用的服务器。

我在某处读到多条 A 记录(虽然不是最佳解决方案)是基于 HTTP/浏览器的应用程序唯一可能的“即时故障转移”解决方案。

这是场景/示例:

我有两个服务器 A 和 B,它们包含完全相同的内容。服务器A的IP地址是1.1.1.1和1.1.1.2 服务器B的IP地址是2.2.2.1和2.2.2.2 我在Godaddy注册了一个域名。如果我想使用 DNS 轮询,哪种方法最好?

方法 1:我是否像这样在 Godaddy 设置我的名称服务器条目?

  1. ns1.serverA.com
  2. ns2.serverA.com
  3. ns1.serverB.com
  4. ns2.serverB.com

方法 2: 或者我将 Godaddy 作为我的名称服务器并添加这样的 A 记录:

  1. A@1.1.1.1
  2. A@1.1.1.2
  3. A@2.2.2.1
  4. A@2.2.2.2

我的问题是,DNS 轮循机制可以使用这两种方法中的任何一种吗?如果不是,那么实现目标的最佳方法是什么?

Jes*_*r M 8

目标:使客户端的 Web 浏览器在服务器立即停机时选择下一个可用的服务器。

这通常是通过引入第三台服务器来完成的,称为负载平衡器。负载均衡器:

  1. 将流量定向到 2 个 Web 服务器。
  2. 监控 2 个 Web 服务器的运行状况。
  3. 如果某个服务器出现故障,则将流量切换到剩余的 Web 服务器。

通过使用 2 个负载均衡器 (LB),即总共至少 4 个服务器(2 个 LB,2 个 webapp 服务器),可以使负载均衡器本身具有高可用性。然而,许多较小的商店只运行一个负载平衡器,因为它们是相对简单的系统,并且通常非常可靠。

方法 1:我是否像这样在 Godaddy 设置我的名称服务器条目?1. ns1.serverA.com 2. ns2.serverA.com 3. ns1.serverB.com 4. ns2.serverB.com

绝对不。名称服务器仅用于解析Web 服务器的 IP 地址。将域的名称服务器保留为您的注册商/DNS 主机 (GoDaddy) 默认值。

方法 2: 或者我将 Godaddy 作为我的名称服务器并添加这样的 A 记录: 1. A @ 1.1.1.1 2. A @ 1.1.1.2 3. A @ 2.2.2.1 4. A @ 2.2.2.2

当 DNS 轮询 (DNS RR) 用作高端故障转移/高可用性设置的一部分时,DNS RR指向的 IP 地址是高度可用的。换句话说,每个 IP 地址都是由 2 个设备处理的虚拟 IP。作为纯粹的高可用解决方案,没有高可用的服务器 IP,DNS RR 的效果不太好。基本问题是某些客户端可能会继续使用“死”IP 地址,您依赖客户端做“正确的事情”,而不是所有客户端都这样做。使用真正的 HTTP 负载均衡器会更好。

也就是说,许多小型网站使用 DNS RR 进行负载分配,但效果很好。我猜这都是关于你的期望。

在 DNS RR 的情况下,每个物理服务器拥有 2 个 IP 地址不会给您带来任何好处,只会带来额外的复杂性。因此,只需在您的符号中为每个服务器使用一个 IP:

A @ 1.1.1.1
A @ 2.2.2.1
Run Code Online (Sandbox Code Playgroud)