Ask CORE

Microsoft Japan Windows Technology Support

June, 2013

  • 2 ノードのサーバー クラスタにおけるネットワーク障害の検出とフェールオーバー動作について

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

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

    Windows Server 2008 ベースのクラスター環境においてパブリック ネットワークにデフォルト ゲートウェイを設定していない事によってクラスターのフェールオーバーが意図通りに発生しないというお問い合わせをいただく事があります。これは Windows Server 2003 と2008 におけるネットワークの正常性確認の動きが違う事に起因して発生します。今回はその仕組みについてご紹介します。

    まずそれぞれの OS のネットワーク障害の検出と回復についての基本的な動作については、以下のURL をご確認ください。

     

    - 参考 Windows Server での正常性確認について:

    ・Windows Server 2003 ベース

    2 ノードのサーバー クラスタにおけるネットワーク障害の検出と回復

    http://support.microsoft.com/kb/242600/ja

    ・Windows Server 2008 ベース

    2 ノードのサーバー クラスタにおけるネットワーク障害の検出と回復(2008 ベース)

    http://support.microsoft.com/kb/2862888

     

    クラスターのネットワーク障害の検出は、クラスターがサービスを提供するパブリック ネットワークでノード間通信が正常に行われない場合に実施されます。その際、ネットワークのどこで障害が発生したかを検知するために、各ノード共通でアクセス可能なアドレスに疎通確認を行います。Windows Server 2003 ベースでは PING を送信する宛先リスト(PINGLIST)を作成し、このリストに従い複数のアドレスに疎通確認を行います。しかしWindows Server 2008では複数の PING の送信先を持たず、デフォルト ゲートウェイのみに疎通確認を行います。そのため、Windows Server  2008 においてはサービスを提供するネットワーク(大体はパブリック ネットワークとして構成)に必ずデフォルト ゲートウェイを設定する必要があります。

    デフォルト ゲートウェイを設定しない場合にはノード間通信に失敗した際にどのネットワーク インターフェースで障害が起きたか検知されません。つまりネットワークで障害が発生した場合にどちらのノードが正常か判断できないため、例えば NIC の障害が発生したノードでリソースを持っていても、正常なノードにフェールオーバーされません。

    以下の簡単なシナリオをご参考ください。

     

    シナリオ:デフォルト ゲートウェイの設定が無い場合(2008 ベース)

    • ノード A のネットワーク インターフェースでネットワーク障害が発生します。

    • ノード A とノード B は通信できません。

    結果

    • ノード A とノード B 両方のネットワーク インターフェースの状態は到達不能となり、ネットワークの状態はパーティション分割になります。

    • リソース グループはフェールオーバーせず、オンラインのまま現在の所有者のノードに留まります。

     

    Windows Server 2003においては PINGLIST が作成され、優先順位の高いものから順番に PING が送信されます。PINGLIST には両ノードからアクセス可能なアドレスが選ばれます(PINGLIST の詳細については上記URLの2003 ベースを確認してください)。しかし Windows Server 2008からはネットワーク障害が検知されてからなるべく早く正常なノードへフェールオーバーを行う観点から、デフォルト ゲートウェイのみに PING が送信されます。Windows Server 2008において PING の送信先をレジストリなどから変更することはできません。

    また Windows Server 2003においては PINGLIST のすべてのアドレスからの応答がなかった場合には、一定時間後に再度優先順位の高いアドレスに PING が再送されていましたが、Windows Server 2008においては再送される設定はありません。

    上記においてバージョンにおけるネットワークの障害の検出方法を比較しましたが、Windows Server 2008 でデフォルト ゲートウェイが設定されていれば、通常運用においては Windows Server 2003 と大きな違いはありません。

  • iSCSI ソフトウェア イニシエーターを利用される場合の注意点

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

    今日は iSCSI ソフトウェア イニシエーターを利用される場合の注意点についてお話ししたいと思います。

    Windows OS では Windows Server 2003 以降 Microsoft iSCSI Software Initiator を利用することで、iSCSI ターゲットへの接続を行うことができます。
    Windows Server 2003 では、以下の弊社ダウンロード センターからイニシエーターをダウンロードする必要がありますが、Windows Vista/Windows Server 2008 以降は OS の標準機能として搭載されています。

     Microsoft iSCSI Software Initiator Version 2.08
     http://www.microsoft.com/en-us/download/details.aspx?id=18986

    iSCSI Software Initiator を利用すると、既存のネットワーク インフラストラクチャーを利用して iSCSI ストレージへの接続が可能になるため、比較的手軽に SAN 環境を利用でき、多くのお客様にご利用いただいています。

    ただし、iSCSI 環境特有の障害お問い合わせも少なからず頂戴しています。
    iSCSI Software Initiator では、ハードウェアの HBA を用いた接続と比べ、ハードウェアの行っている処理部分をソフトウェア部分で代行していることになりますため、高パフォーマンスが必要な状況下や、複数のテクノロジーを組み合わせた処理を行っている状況下で、接続が不安定になるという障害報告が内容として多い状況です。

    具体的には、弊社フェールオーバー クラスタリング (WSFC) や、Hyper-V、VSS (ボリューム シャドウ コピー) と併用した場合などがあります。フェールオーバー クラスタリングと Hyper-V を組み合わせた環境や、Hyper-V 環境でゲストの稼働中に VSS バックアップを行う場合 (オンライン バックアップ) などはストレージに対して、複雑、かつ、高パフォーマンスが求められる処理が行われますので、ネットワークの問題が顕在化する場合があります。
    これらの環境で iSCSI をご利用の際には、事前に負荷テストも含めた十分な検証を実施されることを強くお勧めします。

    また、iSCSI の性質上、ストレージ通信のための処理とネットワーク通信の処理が重なっているために処理が複雑になっている点や、ネットワーク環境側の問題の可能性、ネットワーク機器との相性/親和性も考慮する必要があるため、トラブルシュートが非常に難解になる場合が多いです。
    ネットワーク パケットを確認するという調査アプローチもありますが、流量が膨大であるため、この解析から根本原因にたどり着けるケースは残念ながら多くない状況です。

    そのため、iSCSI の問題の場合、一般的に以下の対応や切り分けのアプローチをお願いしています。
    iSCSI の接続が不安定になるなどの問題が発生したときの対処方法として、参考にしていただければと思います。

    ご確認項目
    =====================
    1. ネットワーク経路、ターゲット デバイスの確認について
    2. NIC の受信バッファ サイズ、遅延 ACK に関する設定の変更について
    3. 最新ドライバーのインストールについて
    4. その他最適化機能の無効化について
    5. イニシエーターの接続設定について

    以下に各項目について説明します。

    1. ネットワーク経路、ターゲット デバイスの確認について
    -----------------------------------------------------------
    まずはターゲット デバイスや、ネットワーク経路に問題 (機器側のエラーや再送の多発など) が発生していないかをご確認ください。

     

    2. NIC の受信バッファ サイズ、遅延 ACK に関する設定の変更について
    ----------------------------------------------------------------------
    iSCSI の接続が不安定な状況やパフォーマンスが出ていない場合、以下の公開情報に記載されている事象が発生している可能性があります。
    受信バッファ サイズの拡張や、遅延 ACK の無効化をご検討ください。

    文書番号: 981482
    Windows Server 2008 および Windows Server 2008 R2 環境に、遅延 ACK が有効に設定されたネットワーク環境と iSCSI 接続されたストレージを持つ場合一般的な操作をするとシステム イベント ログに iScsiPrt のエラーが出力される
    http://support.microsoft.com/kb/981482

    なお、受信バッファ サイズについては基本的にはなるべく大きなサイズに設定することを推奨しています。メモリ消費量が多くなる可能性がありますが、基本的に大きな差異はありません。
    遅延 Ack については、無効にすることで上記問題の影響を確実に切り分けることができるメリットがありますが、本来パフォーマンス向上のための機能ですので、無効時には逆にパフォーマンスが悪くなる可能性があります。
    ただし、顕著に遅くなるなどの障害は基本的には起きませんので、問題の切り分けには有効です。

     

    3. 最新ドライバーのインストールについて
    -------------------------------------------------
    NIC ドライバーの最新版への更新をご検討ください。最新版ドライバーの入手方法はご提供元のベンダー様へご確認ください。
    また、iSCSI 用のドライバー (msiscsi.sys) の最新版 (2013 年 6 月時点) の適用をご検討ください。

    // Windows Server 2012 用
    文書番号 : 2779768
    Windows 8 および Windows Server 2012 の累積的な更新プログラム (2012 年 12 月)
    http://support.microsoft.com/kb/2779768

    // Windows Server 2008 R2/Windows Server 2008 用
    文書番号: 2684681
    Iscsicpl.exe プロセスは、ストレージ デバイスは、Windows Vista、Windows Server 2008、Windows 7 は、または Windows Server 2008 R2 を実行しているコンピューターに再接続しようとするとを応答を停止します。
    http://support.microsoft.com/kb/2684681

    // Windows Server 2003 用
    文書番号 : 2277122
    Stop error in Windows Server 2003 or in Windows Server 2008 R2 if a computer has some iSCSI disks and the computer is under a heavy stress situation: "0x000000D1"
    http://support.microsoft.com/kb/2277122

     

    4. その他最適化機能の無効化について
    ----------------------------------------
    SNP (Scalable Networking Pack) や、VMQ など、ネットワーク通信に関する最適化機能を用いている場合、ご利用の NIC デバイス等の親和性の問題により接続が不安定になる場合があります。
    以下の参考資料をご参照いただき、無効化などの切り分けをご検討ください。

    予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか?
    http://blogs.technet.com/b/jpntsblog/archive/2010/03/23/scalable-networking-pack.aspx

    Hyper-V 環境では以下もご確認ください。
    仮想マシンの通信速度遅延 - VMQ 無効化手順 -
    http://blogs.technet.com/b/jpntsblog/archive/2013/04/12/vmq.aspx

    また、その他ジャンボ フレームなど、NIC 側の最適化機能がありましたら、一時的に無効化して切り分ける方法もご検討ください。

    なお、上記は本来はパフォーマンスを向上させるための機能であり、無効化時には逆にパフォーマンスの問題が生じる可能性がありますのでご注意ください。

     

    5. イニシエーターの接続設定について
    ----------------------------------------
    イニシエーターから接続を行う際に使用されるアダプター、IP アドレス等は既定では自動選択される状態になっています。
    この選択については、ターゲットへ接続する際に [詳細設定] メニューを開き、これを “既定値” から変更することで明示的に指定することが可能です。
    この設定により、意図しない接続ルートが使われることを抑止できますので、この設定もご検討ください。

    設定方法 (Windows Server 2008 R2 の例)

    iSCSI イニシエーターを起動します。
    [接続] を押します。  

     

    [詳細設定] を押します。

     “ローカル アダプター”、”イニシエーター IP”、”ターゲット ポータル IP” を 「既定値」から変更し、明示的に設定します。

     *** 

    以上、iSCSI ソフトウェア イニシエーターを利用されている環境で問題が発生した場合の手助けになれば幸いです。