我们有一个多子网 AlwaysOn 可用性组。有 2 个子网,它们都列在集群和侦听器上。每当我通过侦听器名称进行故障转移和 ping 操作时,它仍会显示故障转移之前的旧 IP 地址。任何专家意见来克服这一点将不胜感激。我已设置 RegisterAllProvidersIP -Value 1。
故障转移后,客户端无法连接,因为侦听器正在获取旧 IP 地址。几分钟后,它会选择正确的一个并且客户端连接。
我们有一个多子网 AlwaysOn 可用性组。有 2 个子网,它们都列在集群和侦听器上。每当我通过侦听器名称进行故障转移和 ping 操作时,它仍会显示故障转移之前的旧 IP 地址。任何专家意见来克服这一点将不胜感激。我已设置 RegisterAllProvidersIP -Value 1。
故障转移后,客户端无法连接,因为侦听器正在获取旧 IP 地址。几分钟后,它会选择正确的一个并且客户端连接。
由于 DNS 记录上的生存时间 (TTL),会发生此行为。客户端不会在每次尝试连接到服务器时进行 DNS 查找。它首先在其 DNS 缓存中查找是否有缓存条目。您可以通过运行查看缓存中的内容
ipconfig /displaydns
。运行此命令后,您将在每条记录上看到“生存时间”属性。这表明记录将保持缓存的秒数。因此,在旧记录超时缓存之前,您的客户端将不会连接到新 IP 地址。如果您深入研究 Microsoft 文档,他们建议将侦听器 DNS 记录的生存时间设置为 5 分钟,以最大限度地减少这种延迟。
此外,如果使用的 SQL 客户端支持“多子网故障转移”,则需要启用该选项。启用此选项后,客户端将尝试连接到为侦听器名称注册的所有 IP 地址。因此,为了使其正常工作,您将始终为侦听器主机名注册两个 IP 地址。
请参阅SQL Server 多子网群集 (SQL Server)