Windows Server 2008 R2 を実行するデータベース可用性グループに推奨される Windows 修正プログラム
原文の記事の投稿日: 2011 年 11 月 20 日 (日曜日)
今年の 8 月初旬、Windows SE チームは Windows Server 2008 R2 フェールオーバー クラスターの問題に関する次のサポート技術 (KB) 情報と関連するソフトウェア修正プログラムをリリースしました。
KB2550886 - 動作を停止するのには、Windows Server 2008 R2 のフェールオーバー クラスターの一時的な通信障害の原因します
この修正プログラムは、複数のデータセンターにまたがるすべてのデータベース可用性グループに強く推奨されるものです。複数のデータセンターにまたがらない DAG の場合も、この修正プログラムを適用することが勧められます。この記事では、Windows フェールオーバー クラスターが一時的な通信障害を検出したときに発生する可能性のある、競合状態とクラスター データベースのデッドロックの問題について説明します。クラスター ノードの再接続ロジック内に競合状態が存在し、クラスターで通信障害が発生すると表面化します。この競合状態が起きると、クラスター データベースはハングし、フェールオーバー クラスターでクォーラムの損失が発生します。
TechNet で説明されているように、データベース可用性グループ (DAG) はクラスター データベースなどのクラスターの特定の機能に依存します。DAG が機能して高可用性を提供できるためには、クラスターとクラスター データベースが正常に動作していることも必要です。
Microsoft は、一時的なネットワーク障害 (約 60 秒間のネットワーク通信の障害) が発生し、その結果、クラスター全体がデッドロックして、DAG 内のすべてのデータベースがマウント解除されるシナリオを発見しました。実際にデッドロックしているクラスター ノードを特定するのは簡単ではないので、再接続ロジックの競合の結果としてフェールオーバー クラスターがデッドロックした場合に実行できる唯一の対処は、クラスター全体のすべてのメンバーを再起動して、デッドロック状態を解決することです。
この問題による典型的な影響は、非対称的な通信障害 (2 つのノードが相互には通信できなくても、他のノードとは通信できる場合) によるクラスター クォーラムの損失です。他のノードでクラスターのグローバル更新マネージャー (GUM) からのクラスター再グループ化メッセージの受信に遅延があると、再グループ化メッセージが予想外の順序で受信される場合があります。このような状況が発生すると、クラスターでは、初期通信障害が発生したノードの 1 つをクラスターから削除するという予期される動作が呼び出される代わりに、クォーラムが失われます。
一般に、このバグは、ペア間の通信の断絶を検出する 2 つのクラスター ノードの待機時間が非対称的である場合 (たとえば、DAG メンバーの半分では待機時間が 1 ミリ秒、他の本文では 30 ミリ秒のような場合) に発生します。第 1 のノードによる接続喪失の検出が第 2 のノードよりかなり早い場合、競合状態が発生する可能性があります。
- 第 1 のノードが 2 つのノード間のストリームの再接続を開始します。これにより、第 2 のノードは新しいストリームを自分のデータに追加します。
- 新しいストリームが追加されると、古いストリームは終了され、その障害ハンドラーは無視するように設定されます。障害が発生した場合、古いストリームはまだ検出されていなかった障害の発生したストリームです。
- 第 2 のノードで接続の断絶が検出されると、第 2 のノードは自分の再接続シーケンスを開始します。接続の断絶が適切な競合ウィンドウで検出された場合、障害が発生したストリームの障害ハンドラーは無視するように設定され、再接続プロセスは再接続を開始しません。一方で、送信キューに対して一時停止を発行し、ノード間のメッセージの送信が停止します。メッセージが停止されると、GUM は正常に動作できなくなり、クラスターの再起動が強制されます。
この問題が発生した場合、DAG には非常に悪い影響があります。したがって、DAG のメンバーであるすべてのメールボックス サーバーにこの修正プログラムを展開することをお勧めします。DAG が複数のデータセンターにまたがっている場合は特に必要です。この修正プログラムは、Exchange 2007 シングル コピー クラスターを実行する環境およびクラスター連続レプリケーション環境に対しても効果があります。
これまでに説明した問題の修正だけでなく、KB2550886 には、DAG にも推奨される Windows Server 2008 R2 の他の重要な修正プログラムも含まれます。
- https://support.microsoft.com/kb/2549472/ja-jp (英語) - Cluster node cannot rejoin the cluster after the node is restarted or removed from the cluster in Windows Server 2008 R2
- https://support.microsoft.com/kb/2549448/ja-jp - Windows Server 2008 R2 で再グループ化のタイムアウト設定を構成した後、デフォルトのタイムアウト値はクラスター サービスを使用します
- https://support.microsoft.com/kb/2552040/ja-jp - 非対称通信に失敗した場合は、Windows Server 2008 R2 のフェールオーバー クラスター クォーラムを失った
これはローカライズされたブログ投稿です。原文の記事は「Recommended Windows Hotfix for Database Availability Groups running Windows Server 2008 R2」をご覧ください。