我们有一个 2 节点多子网集群。当我们对其中一个集群资源组执行故障转移时,我们发现 DNS 更新行为出乎意料。
- NodeA 和 NodeB 分别位于不同的数据中心:SiteA 和 SiteB。
- SiteA 和 SiteB 也是不同的 Active Directory 站点。
- 有一个活动目录林
- DNS01 是位于 SiteA 的 DC 和 DNS 服务器,DNS02 是位于 SiteB 的 DC 和 DNS 服务器,
- 由于应用程序不能将 MultiSubnetFailover=true 作为其连接字符串中的参数,因此所有网络资源的 registerAlProviderIP 均设置为 0。
- NodeA 和 NodeB 均在其 NIC IPv4 配置中将 DNS01 设置为主 DNS,将 DNS02 设置为辅助 DNS。
- IPv6 已禁用
- SiteA 是主站点,所有应用程序和用户都驻留在 SiteA 中。SiteB 仅用于灾难。
在某个网络集群资源发生故障转移期间,客户端的连接超时时间长达 15 分钟。进一步调查发现了以下行为:
- 在故障转移期间,群集使用新的 IP 地址更新 DNS02 上的 A 主机记录。
- 由于 DNS02 和 DNS01 位于不同的 AD 站点,因此根据站点间复制计划向 DNS01 进行复制。(为 15 分钟)
- 我们测试的大多数客户端都将 DNS01 作为其主 DNS 服务器,因此,在复制更新 DNS01 的 15 分钟内,他们遇到了超时问题。
通过在链接对象上启用“更改通知”可以解决 15 分钟的延迟问题。我们已经这样做了,而且这很有效。但是,对于我们来说,由于 SiteA 是主站点,而 SiteB 仅用作灾难备份站点,因此集群最好只更新 DNS01 而不是 DNS02。
我们的预期是,如果查看 SOA 记录,DNS01 是默认 DNS 服务器,因此始终会使用 DNS01。或者,当我们从 SiteA 故障转移到 SiteB 时,将使用 DNS02;如果我们从 SiteB 故障恢复到 SiteA,将使用 DNS01。(因为成为网络资源活动节点的节点会更新位于同一 AD 站点的 DNS 服务器,这是有道理的。)
问题:
我们正在寻找有关 DNS 更新机制的一些深入知识。
- 为什么集群总是默认更新到 DNS02?如果我们关闭 DNS02,集群将更新到 DNS01,但如果我们重新启动 DNS02,集群将开始使用 DNS02 作为默认 DNS 服务器来更新 A 主机记录。
- 这是我们可以配置的东西吗?
- 对于所有节点都位于同一 AD 站点的多子网群集,DNS 更新机制是否不同?
- 是否有任何日志提供有关这些 DNS 更新步骤的详细步骤?