NSX Advanced Load Balancer は、複数の仮想サービスが同じ IP アドレスを共有し、リスナー ポートが異なる場合に VIP 共有をサポートします。このセクションでは、異なるスケールアウト モードでの共有仮想サービス IP (VIP) の動作について説明します。

仮想サービス 1 について考えます。 VIP=1.1.1.1, port=80 仮想サービス 2: VIP=1.1.1.1, port=443

NSX Advanced Load Balancer 配置ロジックは、これらの仮想サービスを同じサービス エンジンのセットに配置するように制限されています。これは、この IP アドレスに対してアドバタイズできるプライマリ サービス エンジンが 1 つのみであるためです。プライマリ サービス エンジンに障害が発生した場合は、プライマリ サービス エンジンのロールを引き継ぐ同じセカンダリ サービス エンジンで仮想サービスを有効にする必要があります。

スケールアウト モード

NSX Advanced Load Balancer が L2 スケールアウト モードで動作する場合(VMware、OpenStack、AWS、Linux サーバ クラウドなどの多くの環境が該当します)、プライマリ サービス エンジンは、VIP をアドバタイズし、セカンダリ サービス エンジンにトラフィックをパントします。

NSX Advanced Load Balancerで動作する場合、BGP、ECMP などの L3 スケールアウト モードが使用されます。これは、BGP が有効になっている Azure、GCP、Linux サーバ クラウドなどの環境の場合、ネクスト ホップ ルーター/ロード バランサは、仮想サービス IP アドレスをアドバタイズするサービス エンジンへのフローベースのハッシュを行います。

レイヤー 2 スケールアウト モードの共有 VIP

VIP を共有する各仮想サービスは個別にスケールアウトでき、NSX Advanced Load Balancer Controller はそれらを同じサービス エンジンのセットに配置し、仮想サービスをホストしているサービス エンジンのセットにのみフローを配分します。



レイヤー 3 スケールアウト モードの共有 VIP

  • VIP を共有する各仮想サービスを個別にスケール アウトすることはできません。トラフィックが正しく機能するには、同じ数の SE にスケーリングする必要があります。

  • 1 つの仮想サービスで実行されるスケールアウト/スケールイン操作は、VIP を共有する他のすべての仮想サービスに均等に適用する必要があります。

  • 1 つの仮想サービスで実行された移行は、VIP を共有する他の仮想サービスに自動的に適用されます。

キャパシティ の SE での共有 VIP 仮想サービスの配置

同じ SE 上の既存の仮想サービスと VIP を共有する完全な SE への新しい仮想サービスの配置(max_vs_per_se に到達)は、NSX Advanced Load Balancer でブロックされました。これにより、共有 VIP 設定に非対称性が生じる可能性があります。ECMP ベースのスケールアウト展開の場合、非対称にスケールアウトされた共有仮想サービスによってトラフィックが失われます。

共有仮想サービスの max_vs_per_se 制限が緩和されました。

シナリオ

以前の動作

新しい動作

max_vs_per_se = 2



仮想サービス 1b が作成/有効になり、仮想サービスが同じ SE に確実に配置されるように、SE 1 に配置する必要があります。

VS 1b が OPER_RESOURCES で、SE 1 が仮想サービスの最大数に達したというエラーが表示されます。

仮想サービス 1b を SE 1 に配置します。このシナリオは、兄弟 VS1a を持つ SE にキャパシティがない場合に仮想サービスを配置しようとするパック アルゴリズムの新しい動作をトリガします。

max_vs_per_se = 2max_se = 1



VS 1a と VS 1b の両方が同時に有効になります。

VS 1a が OPER_RESOURCES、VS 1b が OPER_RESOURCES で、SE グループが最大キャパシティに達したというエラー メッセージが表示されます。

VS 1a を SE 1 に配置し、VS 1b を SE 1 に配置します。このシナリオでは、パックされたアルゴリズムの新しい動作がトリガされます。SE グループが新しい SE を作成できず(max_se に到達)、SE グループ内の既存の SE にすべての共有仮想サービスを一緒に配置するキャパシティがない場合、パックされたアルゴリズムは SE グループ内で最も負荷の少ない SE を選択します。

max_vs_per_se = 2max_se = 2min_scaleout_per_vs = 1



VS 1a は SE 1 および SE2 にスケール アウトされ、VS 1b が作成/有効になります。

VS 1b は SE 1 に配置されます。

VS 1b は SE 1 に配置されます。

また、L3 スケールアウトでは、VS 1a と VS 1b の両方で障害が発生し、非対称性が強調表示されます。つまり、仮想サービス 1a は SE 1 にのみ配置され、仮想サービス 1b は SE 1 と SE 2 に配置されます。

ケース 3 の VS 1a および VS 1b で発生した障害は次のようになります。 障害 1: VS 1a の場合 — 仮想サービスは VsVIP を 2 つの仮想サービスと共有しており、非対称にスケール アウトされます。VIP 1 の場合、この仮想サービスには 2 つのサービス エンジンがあり、共有仮想サービス VS 1b のサービス エンジンは少なくなります。

障害 2:VS 1b の場合:VirtualService は VsVIP を 2 つの仮想サービスと共有しており、非対称にスケール アウトされます。VIP 1 の場合、この仮想サービスには 1 つのサービス エンジンがあります。共有仮想サービス VS 1a には、より多くのサービス エンジンがあります。

max_vs_per_se = 2max_se = 2min_scaleout_per_vs = 2



VS 1a は SE 1 および SE 2 にスケール アウトされ、VS 1b が作成/有効になります。

VS 1b は SE 1 にのみ配置されます

VS 1b は SE 1 にのみ配置されます

ECMP ベースのスケールアウトの場合、非対称性が検出されるたびに、共有 VIP セット内のいずれかの仮想サービスがセット内の他の仮想サービスよりも多くの/少ない SE にスケール アウトされると、すべての共有 VIP 仮想サービスで障害が発生します。

この変更は、パック配置アルゴリズムで最も顕著に見られます。ここでは、SE グループで max_se に達し、一部の SE が max_vs_per_se に達するシナリオでの共有仮想サービスの配置に対応するための最適化が行われています。

注:

コントローラは、現在 SE に存在する、または存在しないすべての共有仮想サービスを追跡するため、バッファ SE の計算は、SE グループ内の各 SE に存在する仮想サービスの数の増加に対応しようとします。

次のイメージは、非対称スケール アウト中に発生した障害を示しています。





OpenStack の VIP 配置の詳細については、『VMware NSX Advanced Load Balancer インストール ガイド』の「OpenStack クラウドの高度な構成」を参照してください。