NSX Edge High Availability (HA) の問題のトラブルシューティング
search cancel

NSX Edge High Availability (HA) の問題のトラブルシューティング

book

Article ID: 341264

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

この記事には、VMware NSX for vSphere 6.x Edge 上の高可用性 (HA) の理解とトラブルシューティグに関する情報が記載されています。

概要

NSX for vSphere 6.x Edge 上の高可用性 (HA)

High Availability (HA) では、ハードウェアまたはソフトウェアの障害で 1 台のアプライアンスが利用できなくなっても、NSX Edge アプライアンスが提供するサービスが利用できるようにします。vSphere HA や MSCS などのその他の HA 機能と一致して、Edge HA はダウンタイム ゼロを実現するように設計されていません。これは、アプライアンス間のフェイルオーバーで一部のサービスの再起動が必要となることがあるためです。

NSX Edge HA は、フェイルオーバーによるダウンタイムを最小限に抑えるように設計されています。たとえば、これはステートフル ファイアウォールや、ロード バランサが保持するステートフル情報の接続トラッカーを同期します。ただし、すべてのサービスをバックアップするのに必要な時間はヌルではありません。サービス再起動の既知の影響の例としては、Edge がルータとして機能している場合に動的ルーティングのダウンタイムがゼロにならないことなどがあります。
 
場合によっては、2 台の Edge HA アプライアンスが相互に通信できず、一方的にアクティブなると決定します。この動作は想定および設計どおりであり、スタンバイ Edge が利用できない場合にアクティブな Edge サービスの可用性を維持します。さらに、その他のアプライアンスが引き続き存在する場合、通信が再確立されると、2 台の Edge HA アプライアンスはアクティブおよびスタンバイのステータスを再ネゴシエートします。ネゴシエーションが終わらず、接続が再確立したときに両方のアプライアンスがアクティブであると宣言した場合、予期しない動作が発生します。split brain といわれるこの状態は、以下の環境条件が原因で発生します。
  • ネットワーク パーティションを含む、物理ネットワーク接続の問題。
  • Edge における CPU またはメモリの競合。
  • 少なくとも 1 台の Edge HA 仮想マシンが利用できなくなる、一時的なストレージの問題。たとえば、VMware では、プロビジョニングが多すぎるストレージから仮想マシンを移動するときの、Edge HA の安定性およびパフォーマンスの改善を観察してきました。特に、大規模な夜間バックアップ中におけるストレージ遅延の大急増は、Edge HA の安定性に影響する可能性があります。
  • パケット交換を伴う物理または仮想ネットワーク アダプタの輻輳。

環境の問題に加えて、HA 構成エンジンが失敗して正しくない状態になるか、HA デーモンが失敗した場合に、スプリット ブレイン状態が発生します。

ステートフル高可用性

プライマリ NSX Edge アプライアンスがアクティブ状態であり、セカンダリ アプライアンスがスタンバイ状態です。NSX Manager は、プライマリ アプライアンスの構成をスタンバイ アプライアンスにレプリケートします。または、手動で 2 つのアプライアンスを追加します。VMware は、プライマリ アプライアンスとセカンダリ アプライアンスを別々のリソース プールおよびデータストアに作成することをお勧めしています。プライマリ アプライアンスとセカンダリ アプライアンスを同じデータストアに作成する場合は、HA アプライアンス ペアが違う ESXi ホストにデプロイされるよう、クラスタ内のすべてのホスト間でデータストアを共有します。データストアがローカル ストレージの場合は、両方の仮想マシンが同じホスト上にデプロイされます。

すべての NSX Edge サービスは、アクティブなアプライアンス上で動作します。プライマリ アプライアンスは、スタンバイ アプライアンスとともにハートビートを維持し、内部インターフェイスを通じてサービスのアップデートを送信します。

一定時間内 (デフォルトは 15 秒) にプライマリ アプライアンスからハートビートが受信されない場合、プライマリ アプライアンスは非活動と判断されます。スタンバイ アプライアンスがアクティブ状態となり、プライマリ アプライアンスのインターフェイス構成を引き継いで、プライマリ アプライアンスで実行されている NSX Edge サービスを起動します。切り替えの実行時には、[設定およびレポート] の [システム イベント] タブにシステム イベントが表示されます。ロード バランサおよび VPN サービスでは、NSX Edge との TCP 接続を再確立するため、サービスが短い間中断されます。論理スイッチ接続およびファイアウォール セッションは、プライマリ アプライアンスとセカンダリ アプライアンスの間で同期されているため、切り替え時のサービスの中断はありません。

NSX Edge アプライアンスが失敗し、不良状態が報告されると、HA は失敗したアプライアンスを復活させるために強制的な同期を行います。アプライアンスが復活すると、その時点でアクティブ状態のアプライアンスの構成を引き継ぎ、スタンバイ状態を維持します。NSX Edge アプライアンスが非活動状態の場合は、アプライアンスを削除し、新しいアプライアンスを追加します。

NSX Edge は、DRS および vMotion を使用した後であっても、2 つの HA NSX Edge 仮想マシンが同じ ESX ホスト上に存在することのないようにします(vMotion を使用して手動で同じホストにした場合を除く)。2 つの仮想マシンは、構成したアプライアンスと同じリソース プールおよびデータストアにある vCenter にデプロイされます。NSX Edge HA の HA 仮想マシンにはローカル リンク IP が割り当てられるため、それらの仮想マシンは相互に通信できます。管理 IP アドレスを指定してローカル リンクをオーバーライドすることができます。

 

NSX for vSphere 6.2.3 における高可用性の機能拡張

このリリースの高可用性の堅牢性は、以下の変更とともに改善されました。

NSX Manager

  • NSX Edge 用に CPU/メモリ リソースの予約。
  • 専用高可用性インターフェイスのサポート。

NSX Edge

  • ハートビート メッセージ交換/クラスタ メンバーシップのための BFD (Bidirectional Forwarding Detection)。
  • HA ロール選択のための新しいステート マシン。



Symptoms:

 


 

 

  • 高可用性 (HA) サービスが実行されていない。
  • プライマリを再起動した後にセカンダリ Edge へのフェイルオーバーが失敗する
  • アクティブとスタンバイの HA Edge 間にスプリット ブレーン シナリオが発生する
  • VMware NSX Edge ログに次のようなエラーが含まれている。

    2015-04-13T15:22:11+00:00 vse-ahs-1 ha[]: [AHS]: [daemon.warning] [1919]: WARN: Late heartbeat: Node vse-ahs-1: interval 30760 ms
    2015-04-13T15:22:11+00:00 vse-ahs-1 heartbeat: [daemon.warning] [1919]: WARN: Late heartbeat: Node vse-ahs-1: interval 30760 ms
    2015-04-13T15:22:11+00:00 vse-ahs-1 ha[]: [AHS]: [daemon.warning] [1919]: WARN: node vse-ahs-0: is dead
    2015-04-13T15:22:11+00:00 vse-ahs-1 heartbeat: [daemon.warning] [1919]: WARN: node vse-ahs-0: is dead
    2015-04-13T15:22:11+00:00 vse-ahs-1 ha[]: [AHS]: [daemon.info] [1919]: info: Link vse-ahs-0:vNic_1 dead.
    2015-04-13T15:22:11+00:00 vse-ahs-1 heartbeat: [daemon.info] [1919]: info: Link vse-ahs-0:vNic_1 dead.
    2015-04-13T15:22:11+00:00 vse-ahs-1 ha[]: [AHS]: [daemon.warning] [1919]: WARN: Deadtime value may be too small

    :前述のログの引用は単なる例です。日付、時間、および環境変数は、環境によって異なる場合があります。



Environment

VMware NSX for vSphere 6.1.x
VMware NSX for vSphere 6.2.x
VMware NSX for vSphere 6.0.x

Resolution

それぞれのトラブルシューティング手順がお使いの環境に当てはまることを確認します。それぞれの手順で、考えられる原因を排除し、必要に応じて是正措置を取るための指示あるいはドキュメントへのリンクが提供されます。手順は、問題を隔離し、適切な解決方法を特定するために最適な順番で並べられています。手順を省略しないでください。

  1. バグ修正で問題が解決されているかどうか、最新リリースのリリース ノートを確認します。詳細については、「VMware NSX for vSphere Documentation」ページを参照してください。
  2. Edge をデプロイするときに少なくとも 1 つの内部インターフェイスが構成されていることを確認します。これは HA を有効化する前に必要です。
  3. show service highavailability コマンドを実行して、アクティブとスタンバイ両方の Edge の健全性ステータスが正常で、実行中であることを確認します。

    例:

    EDGE-1-0> show service highavailability

    Highavailability Status: running
    Highavailability Unit Name: edge-1-0
    Highavailability Unit State: active
    Highavailability Interface(s): vNic_1
    Unit Poll Policy:
    Frequency: 3 seconds
    Deadtime: 15 seconds
    Stateful Sync-up Time: 10 seconds
    Highavailability Healthcheck Status:
    Peer host [edge-1-1 ]: good
    This host [edge-1-0 ]: good
    Highavailability Stateful Logical Status:
    File-Sync running
    Connection-Sync running
    xmit xerr rcv rerr
    21612 0 13920 0
  4. show service highavailability コマンドを実行して、ピア Edge HA IP アドレスを見つけます。
  5. ping <peer_ha_ip> コマンドを実行して、ピア HA IP アドレスに ping してネットワーク接続を確認します。アクセスできない場合、ネットワーク接続の問題を最初に解決する必要があります。アクセスできる場合、前に断続的なネットワーク接続の問題が発生した可能性があります。

    Declare Dead Time 設定の値を、デフォルトの 15 秒から減らすことを検討してください。一定時間内にアクティブな Edge からハートビートが受信されない場合、アクティブな Edge は非活動と判断されます。スタンバイ Edge がアクティブ状態となり、プライマリ アプライアンスのインターフェイス構成を引き継いで、プライマリ アプライアンスで実行されている NSX Edge サービスを起動します。切り替えの実行時には、[設定およびレポート] の [システム イベント] タブにシステム イベントが表示されます。

    ハートビート設定を構成するには:

    1. vSphere Web Client にログインします。
    2. [Networking & Security] をクリックしてから、[NSX Edge] をクリックします。
    3. NSX Edge をダブルクリックします。
    4. [管理] タブをクリックしてから、[設定] タブをクリックします。
    5. [HA 構成] パネルで、[変更] をクリックします。
    6. [HA 構成の変更] ダイアログ ボックスで [非活動時間の宣言] を入力します。デフォルト値は 15 秒です。
    7. [OK] をクリックします。
  6. NSX Edge 仮想マシンおよび ESXi ホストの両方について、CPU、メモリ、ネットワーク、ストレージ使用率の詳細などを収集します。
  7. デバッグ パケット ディスプレイ インターフェイス <ha-interface> udp_port_694 コマンドを実行して、ハートビートが送受信されているかどうかを確認します。
  8. show service highavailability internal コマンドを実行して、HA デーモン内部ステータスを確認します。
    :このコマンドは、VMware NSX for vSphere 6.2.x でサポートされています。6.2 よりも前のバージョンの場合は、root シェルから crm-mon-1 コマンドを実行します。

    :前述のコマンドは、両方のNSX Edge 仮想マシンのコンソール上でキャプチャされるはずです。
この記事の手順を試みても問題が解決しない場合は、次を参照してください。

 



Additional Information

ログ メッセージを使用して NSX Edge HA の問題をトラブルシューティングする

このログ シーケンスの例では、一時的なスプリット ブレイン状態からの自動リカバリ手順を示します。HA イベントは 2016-01-16T12:21 で始まり、4 秒で終わります。

2016-01-16T12:21:44+00:00 vShield-edge-3-1 ha[]: [default]: [daemon.warning] [1730]: WARN: node vshield-edge-3-0: is dead
2016-01-16T12:21:44+00:00 vShield-edge-3-1 heartbeat: [daemon.warning] [1730]: WARN: node vshield-edge-3-0: is dead
2016-01-16T12:21:48+00:00 vShield-edge-3-1 crmd: [daemon.info] [1953]: info: crm_update_peer_proc: vshield-edge-3-0.ais is now online,

このログ シーケンスの例では、Edge2-0 のハートビートが Edge2-1 で途絶えます。ただし、状態は 2 秒以内に自動的にリカバリされます。

2016-01-16T12:50:53+00:00 vShield-edge-2-0 ha[]: [default]: [daemon.warning] [1781]: WARN: node vshield-edge-2-1: is dead
2016-01-16T12:50:53+00:00 vShield-edge-2-0 crmd: [daemon.info] [1930]: info: crm_update_peer_proc: vshield-edge-2-1.ais is now offline
2016-01-16T12:50:55+00:00 vShield-edge-2-0 ha[]: [default]: [daemon.crit] [1781]: CRIT: Cluster node vshield-edge-2-1 returning after partition.

DEBUG モードの詳細とともに、ログは INFO モードで提供されます。
  • スプリット ブレインを検出して確認する

    LOGGER.debug("Attempting Split Brain recovery for edge {}, config version {}.", edgeId, configVersion);

    LOGGER.debug("Confirmed Split Brain for edge {} with vm0 state as {} and vm1 state as {}", edgeId, haState0, haState1);
    LOGGER.info("Split Brain confirmed for edge {}", edgeId);
    OR
    LOGGER.debug("No Split Brain for edge {} with vm0 state as {} and vm1 state as {}", edgeId, haState0, haState1);
    LOGGER.info("No Split Brain observed for edge {}. Returning from HaAutoHealTask without further action.", edgeId);
  • スプリット ブレインのリカバリを試行する

    EdgeEventCodes.HA_STATE_SPLIT_BRAIN,
    logMessage = "System event: Attempt Split Brain recovery on edge id " + edgeId + ". AutoHeal Counter :" + ct.getAutoHealCount();

    LOGGER.info("Configuring deadTimeInterval to {} seconds to restart HA daemon and recover from Split Brain for edge {}", deadTimeInterval, edge);

    EdgeEventCodes.HA_STATE_SPLIT_BRAIN_RECOVERY_ATTEMPT,
    String logMessage = "Recovery from Split Brain for vShield Edge " + edgeId + " attempted with count "+ attempt;

    スプリット ブレインのリカバリを試行しない

    LOGGER.info("Current edge version {} is not APPLIED. Not attempting HA Split Brain recovery.", edge.getEdgeVersion());
  • スプリット ブレインがリカバリされる

    EdgeEventCodes.HA_STATE_SPLIT_BRAIN_RECOVERED,
    String logMessage = "System event: Split Brain recovered on edge id " + edgeId + ". AutoHeal Counter :" + ct.getAutoHealCount();

  • スプリット ブレインのリカバリ後(N 回リカバリを試した後、イベントはバックオフ モードになる)

    EdgeEventCodes.HA_STATE_SPLIT_BRAIN,
    logMessage = "Raising system event for Split Brain on edge id " + edgeId + ". Event Counter :" + ct.getEventCount();

  • スプリット ブレインのリカバリを再試行するリセット間隔

    LOGGER.info("Split Brain Recovery time interval elapsed. Reset the counter for edge {}.", edgeId);
  • フェイルオーバーにつながる可能性のある注視すべきメッセージ

    WARN: Late heartbeat: - heartbeat is not returned in the heartbeat interval
  • ハートビートが完全に途絶えた場合に注視すべきメッセージ

    WARN: Deadtime value may be too small

:前述のログの引用は単なる例です。日付、時間、および環境変数は、環境によって異なる場合があります。