NSX 4.1から追加されたMulti-TEP HAの機能を試してみました。
BFDでTEP間の疎通性を追跡し、リンクアップはしているが何等かの理由でTEP間の疎通が取れなくなった場合などにMulti TEPと本機能を有効にしておくと、障害が発生していないほうのTEPにVMのvNICを割り当てなおしてくれます。
準備した環境
ネストESXiを2ホスト分用意し、NSXをMulti TEPでインストールします。それぞれのvmnicはVLAN TrunkのNSXセグメントを用意して使用しています。
このネストESXiのvmnicが接続されているセグメントのVLAN Trunk設定を消すことで、リンクアップはしているがGeneveカプセル化されたパケットがセグメントを通過できなくなる、という状況を作れますので、その際の動作を確認していきます。
NSXのバージョンは下記になります。
NSX: 4.1.2
動作の確認
いまのところMulti‐TEP HA機能についてはGUIが用意されておらず、設定や設定の確認はAPIで行う必要があるようです。
まずはTEP HAのプロファイルを作成する必要があるため、下記のリクエストURLとボディを使います。
ID(プロファイル名)もvtephaprofile1と上記リンク先のマニュアルそのままにしました。
PUT https://<nsx-policy-manager>/policy/api/v1/infra/host-switch-profiles/vtephaprofile1
{
"enabled": "true",
"failover_timeout":"5",
"auto_recovery" : "true",
"auto_recovery_initial_wait" : "300",
"auto_recovery_max_backoff" : "86400",
"resource_type": "PolicyVtepHAHostSwitchProfile",
"display_name": "VtepHAProfile1"
}
リクエストボディもマニュアルそのままです。(それぞれの項目の意味もマニュアル参照)
TEP HA プロファイルを作成した後は、これをトランスポートノードプロファイルに紐づけてやる必要があります。
今回の環境では、NSXインストール時に既にトランスポートノードプロファイルを作成済みでしたので、既存のトランスポートノードプロファイルにTEP HA プロファイルを紐づけました。
手順としては現在利用中のトランスポートノードプロファイルをGETし、"host_switch_profile_ids"
の箇所に下記のブロックを追記してPUTする形になります。
{
"key": "VtepHAHostSwitchProfile",
"value": "/infra/host-switch-profiles/vtephaprofile1"
}
ここまでの準備が整ったら、Overlayセグメントを1つ作成し、別々のホストに存在する2つの仮想マシンを接続します。その後Pingで通信させ、ホストのTEP間でGeneveトンネルを確立したかを確認します。
Geneveトンネルが確立され、カプセル化インターフェースとしてvmk11を使用しています。
vmk11が使用するvmnicをesxtopで確認してみます。
その後、vmnic2が接続されている箇所のVLAN Trunk設定を消します。
結果としてはMulti-TEP HA機能によって、TEP通信はvmk10側に割り当て直され、通信を復旧させることができました。
通信断は約10秒程度(1秒間隔のPingが9パケットほどロス)となりました。
また、TEP HA プロファイル内ではauto_recovery
の設定があり、こちらがtrueになっていると障害が発生したTEPの疎通が回復すると、元のTEPに切り戻る動作となります。
こちらもVLAN Trunk設定を元に戻し確認してみたところ、正確な時間は計測できておりませんが、元のvmkを使用するようにトンネルのステータスが更新されました。
パケットロスは特になしでした。
もう1つのテストとして、TEP HA プロファイルのfailover_timeout
設定(障害検出から代替TEPへVMを移動するまでの時間)を5から1にしてPUTし直してみたところ、通信断時間は約5秒程となりましたので、期待どおりの動作となりました。