我有一个在 2 个 Windows 2012 R2 节点上运行的多子网 SQL Server 2012 故障转移群集。在节点 A 上运行时,群集位于 192.168.1.10;在节点 B 上运行时,群集位于 192.168.5.10。当我查看域上的 DNS 时,我看到 2 个 A 记录:
SQLCLUSTER-192.168.1.10
SQLCLUSTER-192.168.5.10
据我所知,当有 2 个同名的 A 记录时,Windows 客户端应该足够智能,可以在 10 秒内确定实时 IP,但我没有做到这一点。如果我将集群从节点 A 故障转移到节点 B,许多客户端计算机(Web 和 SSRS)将不会获取新的 IP 地址。
例如,如果我在 SSRS 机器上 ping SQLCLUSTER,我会看到它从 192.168.1.10 回复。如果我将集群故障转移到节点 B 并再次 ping,它仍然会尝试 ping 192.168.1.10,而不是 .5.10(它应该这样做)。
确保其正常工作的唯一方法似乎是删除离线节点的 DNS 记录,然后在客户端上执行 flushdns/registerdns。我可能错过了什么吗?DNS 服务器位于 192.168.1.x 子网上,这可能会优先于 .1.x 地址,这是一个问题吗?
我查看了事件查看器,没有看到有关写入 DNS 记录或读取 DNS 记录的任何错误,因此我相信我可能只是配置不正确。
答案1
好的,我想我找到了一种解决方法——虽然不太好,但确实有效。
我设置注册所有提供商IP为 0,然后设置主机记录TTL到300并重新启动角色。
这将强制集群仅在 DNS 中注册 1 个地址并将其 TTL 默认为 5 分钟。