运行 Windows 2012 R2 Round Round 为我的 DNS 区域启用(AD 集成)
我要么不明白这一点,要么它不起作用。
我想使用循环 DNS 来解析服务器集群。
首先,我尝试创建新的子域和 cname 记录
- 我为每个服务器都设置了“mycluster”子域名和指向“.”(空白名称)的 cname
- 我可以 ping mycluster.mydom.com 并取回其中一台服务器的 IP
- 但在连续 ping 时,它回复的是同一个服务器
- 在我刷新 DNS 之后,它仍然回复了同一个服务器的 IP
然后我尝试创建新的子域和 A 记录
- 所以我遇到了同样的问题,但我得到的是带有空白名称的 A 记录,该记录解析为域名
- 这次我像以前一样从同一台服务器取回了 IP
- 但是当我在计算机上刷新 DNS 时,我得到了一个不同的地址(每次我刷新 DNS 时,我都会得到一个不同的地址)
Windows DNS 中的 cname 是否不支持循环?
这是否也意味着需要编写应用程序来支持循环?例如,应用程序必须不缓存解析的名称才能正确进行负载平衡
答案1
多个“A”记录是 DNS 轮询的实现方式。假设您在三台服务器上有一个网站 www.example.com。您可以向 example.com DNS 区域添加三个 A 记录,每个记录指向每台服务器的每个 IP 地址。如下所示:
- www A 10.0.0.1
- www A 10.0.0.2
- www A 10.0.0.3
当浏览器/客户端向 DNS 服务器发送 DNS 请求以查找 www.example.com 时,DNS 服务器会将所有三个条目发送回浏览器/客户端。您可以使用 ping 连接到 www.example.com,然后使用IPCONFIG/DISPLAYDNS。您应该看到所有三个条目都已返回。刷新缓存并重复该过程,这次将返回所有三个条目,但顺序不同(DNS 循环运行!)
关键在于……Ping 并不是一个非常智能的应用程序,因此如果第一个条目因某种原因关闭,它将不会尝试列表中的第二个条目。这是需要应用程序端逻辑的地方。例如,如果第一个条目没有响应,像 Skype for Business 客户端这样的应用程序将尝试 DNS 提供的列表中的下一个条目。
DNS 循环是一种粗略的负载平衡机制,如果你了解它的局限性,它会很有用。
或者,如果您使用软件负载平衡器(如 Microsoft NLB)或硬件负载平衡器,这些方法就比较不优雅。我们只需向 DNS 添加一个条目,该条目将指向负载平衡器正在使用的 VIP,我们将其留给负载平衡器来确保我们始终连接到正常运行的服务器。