ネットワーク ケーブルを抜いたときにフェールオーバーしない

こんにちは。Windows プラットフォーム サポートの戸田です。

日々のサポート業務の中で、よくお問い合わせを頂く内容についてご紹介します。

Windows Server 2008 以降の WSFC (Windows Server Failover Clustering) は高可用性ソリューションとしての認識からか、クラスター環境を構築後に障害テストを実施いただくお客様が多くおられます。
実際にはネットワーク ケーブルの抜挿を試されることが多いようですが、その結果フェールオーバーしないとのお問い合わせを頂くことがあります。

具体的には以下の様なお問い合わせです。

「フェールオーバーのテストを行おうとネットワーク ケーブルを抜いたが、イベント ID 1126 や 1129 が記録されるものの、IP アドレス リソースが失敗せずフェールオーバーもしない。」

- 参考資料
  Event ID 1126 - Cluster Network Connectivity
    https://technet.microsoft.com/en-us/library/dd354065(v=ws.10).aspx

  Event ID 1129 - Cluster Network Connectivity
    https://technet.microsoft.com/en-us/library/dd353962(v=ws.10).aspx

このときフェールオーバー クラスター マネージャーからネットワークの状態を見ると「パーティション分割」や「到達不能」のステータスになっているかと思います。

この場合、メディア検出機能が無効化されていないかどうかを確認してみてください。

Windows 2000 Server の MSCS (MicroSoft Cluster Service) の頃は、クロス ケーブルを使用してプライベート ネットワークを構成した場合、ノードの再起動をするとネットワークの役割が変わってしまう問題がありました。
そのため、クロス ケーブルを使用するときにはメディア検出機能を無効にする設定が推奨とされていました。この話は Windows 2000 Server の頃の設定ですが、これが未だに行われている可能性があります。

- 参考資料
  クラスタ ネットワークの役割が自動的に変更される
    https://support.microsoft.com/kb/254651/ja

  Windows で TCP/IP のメディア検出機能を無効にする方法
    https://support.microsoft.com/kb/239924/ja

また Windows Server 2008 環境でも AD をインストールするとこのメディア検出機能が無効化されます。

WSFC ではこのメディア検出機能を利用しているので、ネットワーク ケーブルの切断 (リンク ダウン) クラスターに検知させたい場合には、メディア検出機能が有効になっているかどうかを確認してみてください。

 

もうひとつ。以下のようなお問い合わせもありました。

「ネットワーク ケーブルを抜いてフェールオーバーのテストを行っていたが、最初はフェールオーバーしたのに、現在は IP アドレスのリソースが障害のまま、フェールオーバーしなくなった。」

この振る舞いは、対象のリソースやグループ (クラスター化されたサービスまたはアプリケーション) のプロパティ設定に起因する動作の可能性があります。

以下のプロパティ設定を確認してみてください。

- IP アドレス リソースのプロパティ設定 ([ポリシー]タブ)

  ・「指定期間内での再起動の試行回数」(既定値: 1 回)
  ・「再起動期間 (mm:ss) 」(既定値: 15 分)

この設定の場合、リソースが失敗となった際の動作として 15 分以内に 1 回までのオンラインの再試行が許可されますが、この再試行に失敗するとグループ障害としてフェールオーバーの動作に移ります。

- グループのプロパティ設定 ([フェールオーバー]タブ)

  ・「指定した期間内の最大エラー数」(既定値: ノード数 - 1 回)
  ・「期間 (時間)」(既定値: 6 時間)

この設定の場合 (リソース障害による) グループのフェールオーバーは 6 時間 以内に 1 回までのフェールオーバーが許可されています。

これらのしきい値を超えた場合には、そのリソースは失敗状態となり、最終的にフェールオーバーは行われなくなります。
このしきい値を越えたという情報はクラスターの内部変数で記憶されており、これをクリアするためには上記のしきい値の期間が経過するか、クラスターの再起動が必要となります。

- 参考資料
  <リソース> プロパティ : [ポリシー] タブ
    https://technet.microsoft.com/ja-jp/library/cc725685(WS.10).aspx

  クラスター化されたサービスまたはアプリケーションの設定の変更
    https://technet.microsoft.com/ja-jp/library/cc755151(v=ws.10).aspx

もし上記の様な操作でフェールオーバーテストを実施いただくときには、テスト目的としてこれらのプロパティ設定 (「指定期間内での再起動の試行回数」や「指定した期間内の最大エラー数」) を予め大きくしておくと良いと思います。