2つのWindows2012R2ノードで実行されているマルチサブネットSQLServer2012フェールオーバークラスターがあります。クラスターは、NODE Aでは192.168.1.10に、NODE Bで実行している場合は192.168.5.10にあります。ドメインでDNSを見ると、2つのAレコードが表示されます。
SQLCLUSTER-192.168.1.10
SQLCLUSTER-192.168.5.10
同じ名前のAレコードが2つあるときに読んだところによると、Windowsクライアントは10秒以内にライブIPを判別できるほど賢いはずですが、それがわかりません。クラスタをNODEAからNODEBにフェイルオーバーすると、多くのクライアントマシン(WebおよびSSRS)が新しいIPアドレスを取得しません。
したがって、たとえば、SSRSマシンを使用してSQLCLUSTERにpingを実行すると、192.168.1.10からの応答が表示されます。クラスターをNODEBにフェイルオーバーして再度pingを実行しても、.5.10ではなく192.168.1.10にpingを実行しようとしています。
正しく機能することを確認する唯一の方法は、オフラインノードのDNSレコードを削除してから、クライアントでflushdns/registerdnsを実行することです。ここで見逃したことがあるのでしょうか? DNSサーバーが192.168.1.xサブネット上にあり、それが.1.xアドレスを優先する可能性があるという問題ですか?
イベントビューアを見ると、DNSレコードの書き込みや読み取りに関するエラーは見られないため、何かが正しく構成されていない可能性があると思われます。
わかりました。回避策を見つけたと思います。正確にはきれいではありませんが、機能します。
RegisterAllProvidersIPを0に設定してから、HostRecordTTLを300に設定し、再起動しました役割。
これにより、クラスターはDNSに1つのアドレスのみを登録し、デフォルトでそのTTLを5分にします。