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