web-dev-qa-db-ja.com

フェイルオーバー後にリスナーIPが変更されない

マルチサブネットのAlwaysOn可用性グループがあります。 2つのサブネットがあり、それらはクラスターとリスナーにもリストされています。フェイルオーバーしてリスナー名でpingを実行すると、フェイルオーバー前の古いIPアドレスが表示されます。これを乗り越えるための専門家の意見は大歓迎です。 RegisterAllProvidersIP -Value 1を設定しました。

フェイルオーバー後、リスナーが古いIPアドレスを取得しているため、クライアントは接続しません。数分後、それは正しいものをピックアップし、クライアントが接続します。

1
SQL_NoExpert

この動作は、DNSレコードの存続時間(TTL)が原因で発生します。クライアントは、サーバーに接続しようとするたびにDNSルックアップを行うわけではありません。まずDNSキャッシュを調べて、キャッシュされたエントリがあるかどうかを確認します。 ipconfig /displaydnsを実行すると、キャッシュの内容を確認できます。これを実行すると、各レコードに「Time To Live」プロパティが表示されます。これは、レコードがキャッシュされたままになる秒数を示します。

そのため、古いレコードがキャッシュからタイムアウトになるまで、クライアントは新しいIPアドレスに接続しません。 Microsoftのドキュメントを詳しく調べる場合は、この遅延を最小限に抑えるために、リスナーDNSレコードの存続時間を5分に設定することをお勧めします。

さらに、使用中のSQLクライアントが「マルチサブネットフェイルオーバー」をサポートしている場合は、そのオプションを有効にする必要があります。このオプションを有効にすると、クライアントはリスナー名に登録されているすべてのIPアドレスに接続しようとします。したがって、これが適切に機能するためには、リスナーのホスト名に常に両方のIPアドレスが登録されています。

参照 SQL Serverマルチサブネットクラスタリング(SQL Server)

3
Tony Hinkle