Distributed Switch ネットワークで構成された スーパーバイザー の HAProxy ロード バランサに実装可能なトポロジを確認します。vSphere IaaS control plane と Distributed Switch ネットワークを併用している場合、HAProxy は、Tanzu Kubernetes Grid 制御プレーンにアクセスする開発者と、ロード バランサ タイプの Kubernetes サービスに対応したロード バランシングを提供します。

スーパーバイザー のワークロード ネットワーク

Distributed Switch ネットワークを使用した スーパーバイザー を構成するには、クラスタ内のすべてのホストを Distributed Switch に接続する必要があります。スーパーバイザー ワークロード ネットワーク用に実装するトポロジに応じて、1 つ以上の分散ポート グループを作成します。作成したポート グループを、ワークロード ネットワークとして、vSphere 名前空間 に指定します。

ワークロード ネットワークは、 Tanzu Kubernetes Grid クラスタのノードと、 スーパーバイザー 制御プレーン仮想マシンへの接続を提供します。Kubernetes 制御プレーン仮想マシンに接続を提供するワークロード ネットワークは、プライマリ ワークロード ネットワークと呼ばれます。各 スーパーバイザー にそれぞれ 1 つのプライマリ ワークロード ネットワークが必要です。 スーパーバイザー に対して、分散ポート グループの 1 つをプライマリ ワークロード ネットワークとして指定する必要があります。
注: ワークロード ネットワークが追加されるのは スーパーバイザー を有効にするときだけで、後で追加することはできません。

スーパーバイザー 上の Kubernetes 制御プレーン仮想マシンは、プライマリ ワークロード ネットワークに割り当てられた IP アドレス範囲から 3 つの IP アドレスを使用します。Tanzu Kubernetes Grid クラスタの各ノードには、この Tanzu Kubernetes Grid クラスタが実行されている名前空間で構成されたワークロード ネットワークのアドレス範囲から割り当てられた、それぞれ別の IP アドレスが割り当てられます。

IP アドレス範囲の割り当て

HA プロキシ ロード バランサを使用する スーパーバイザー のネットワーク トポロジを計画するときは、次の 2 種類の IP アドレス範囲を設定するように計画します。
  • HAProxy に対する仮想 IP アドレスの割り当ての範囲。HAProxy の仮想サーバ用に構成した IP アドレス範囲は、ロード バランサ アプライアンスによって予約されます。たとえば、仮想 IP アドレス範囲が 192.168.1.0/24 の場合、この範囲に含まれるすべてのホストは、仮想 IP トラフィック以外のトラフィックではアクセスできません。
    注: HAProxy 仮想 IP アドレス範囲内にゲートウェイを構成するとゲートウェイへのすべてのルートが失敗するため、構成しないようにします。
  • スーパーバイザー および Tanzu Kubernetes Grid クラスタのノードの IP アドレス範囲。スーパーバイザー 内の Kubernetes 制御プレーン仮想マシンにはそれぞれ IP アドレスが割り当てられていて、合計で 3 つの IP アドレスがあります。Tanzu Kubernetes Grid クラスタの各ノードには、別の IP アドレスが割り当てられます。名前空間に構成する スーパーバイザー の各ワークロード ネットワークに、一意の IP アドレス範囲を割り当てる必要があります。

1 つの /24 ネットワークによる構成の例:

  • ネットワーク:192.168.120.0/24
  • HAProxy 仮想 IP アドレス:192.168.120.128/25
  • HAProxy ワークロード インターフェイスの 1 つの IP アドレス:192.168.120.5

最初の 128 アドレスに含まれる制限のない IP アドレスに応じて、スーパーバイザー のワークロード ネットワークの IP アドレス範囲を定義できます。たとえば、次のようにします。

  • 192.168.120.31 ~ 192.168.120.40:プライマリ ワークロード ネットワーク
  • 192.168.120.51 ~ 192.168.120.60:別のワークロード ネットワーク
注: ワークロード ネットワークに定義する範囲は、HAProxy 仮想 IP アドレスの範囲と重複しないようにする必要があります。

HAProxy ネットワーク トポロジ

ネットワーク構成には、[デフォルト][フロントエンド] という、HAProxy をデプロイする 2 つのオプションがあります。デフォルト ネットワークには、管理ネットワーク用とワークロード ネットワーク用の 2 つの NIC があります。フロントエンド ネットワークには、管理ネットワーク、ワークロード ネットワーク、クライアント用のフロントエンド ネットワークの 3 つの NIC があります。次の表に、各ネットワークの特性の一覧と説明を示します。

本番環境インストールでは、 [フロントエンド ネットワーク] 構成を使用して HAProxy ロード バランサをデプロイすることが推奨されます。 [デフォルト] 構成を使用して HAProxy ロード バランサをデプロイする場合は、ワークロード ネットワークに /24 の IP アドレス ブロック サイズを割り当てることをお勧めします。いずれの構成オプションでも、DHCP は推奨されません。
ネットワーク 特性
[管理]
スーパーバイザー クラスタは管理ネットワークを使用して HAProxy ロード バランサに接続し、このバランサをプログラムします。
  • HAProxy データ プレーン API エンドポイントは、管理ネットワークに接続されているネットワーク インターフェイスにバインドされています。
  • スーパーバイザー クラスタがロード バランサ API に確実に接続できるようにするには、HAProxy 制御プレーン仮想マシンに割り当てられた管理 IP アドレスに、管理ネットワーク上の固定 IP アドレスを指定する必要があります。
  • HAProxy 仮想マシンのデフォルト ゲートウェイは、このネットワーク上に存在する必要があります。
  • DNS クエリはこのネットワーク上で実行する必要があります。
[ワークロード]
HAProxy 制御プレーン仮想マシンは、ワークロード ネットワークを使用して、スーパーバイザー クラスタおよび Tanzu Kubernetes クラスタ ノードのサービスにアクセスします。
  • HAProxy 制御プレーン仮想マシンは、このネットワーク上のスーパーバイザーおよび Tanzu Kubernetes クラスタ ノードにトラフィックを転送します。
  • HAProxy 制御プレーン仮想マシンがデフォルト モード(2 つの NIC)でデプロイされている場合、ロード バランサ サービスへのアクセスに使用される論理ネットワークはワークロード ネットワークが提供する必要があります。
  • [デフォルト] 構成では、ロードバランサの仮想 IP アドレスと Kubernetes クラスタ ノードの IP アドレスはこのネットワークから取得されます。これらのアドレスは、ネットワーク内の、重複しない、独立した範囲として定義されます。
注: ワークロード ネットワークは、管理ネットワークとは別のサブネットに配置してください。 システム要件を参照してください。
[フロントエンド ](オプション)

クラスタ ワークロードにアクセスする外部クライアント(ユーザーやアプリケーションなど)は、フロントエンド ネットワークを使用して、仮想 IP アドレスによってバックエンド ロード バランシング サービスにアクセスします。

  • フロントエンド ネットワークが使用されるのは、HAProxy 制御プレーン仮想マシンが 3 つの NIC を使用してデプロイされている場合のみです。
  • 本番環境インストールに推奨されます。
  • フロントエンド ネットワークで、仮想 IP アドレス (VIP) が公開されます。HAProxy は、トラフィックのバランスを調整し、トラフィックを適切なバックエンドに転送します。

次の図に、[フロントエンド ネットワーク] トポロジを使用した HAProxy デプロイを示します。この図は、インストールおよび構成プロセスで想定される構成フィールドの場所を示しています。

""

1 つのワークロード ネットワークを使用する スーパーバイザー トポロジと 2 つの仮想 NIC を使用する HAProxy

このトポロジでは、次のコンポーネントに対する 1 つのワークロード ネットワークを持つ スーパーバイザー を構成します。

  • Kubernetes 制御プレーンの仮想マシン
  • Tanzu Kubernetes Grid クラスタのノード。
  • 外部サービスと DevOps ユーザーが接続する HAProxy の仮想 IP アドレス範囲。この構成では、2 つの仮想 NIC を使用する HAProxy がデプロイされます([デフォルト] 構成)。1 つは管理ネットワークに接続され、もう 1 つはプライマリ ワークロード ネットワークに接続されます。仮想 IP アドレスは、プライマリ ワークロード ネットワークとは別のサブネットに割り当てる必要があります。
スーパーバイザー に対して 1 つのポート グループをプライマリ ワークロード ネットワークとして指定してから、同じポート グループを vSphere 名前空間 のワークロード ネットワークとして使用します。 スーパーバイザーTanzu Kubernetes Grid クラスタ、HAProxy、DevOps ユーザー、および外部サービスはすべて、プライマリ ワークロード ネットワークとして設定されている同じ分散ポート グループに接続されます。
図 1. 1 つのネットワークによってバッキングされる スーパーバイザー

この図は、ワークロードと管理トラフィック用の分散ポート グループを 1 つ持つ スーパーバイザー を示しています。
DevOps ユーザーまたは外部アプリケーションのトラフィック パスは次のとおりです。
  1. DevOps ユーザーまたは外部サービスは、分散ポート グループのワークロード ネットワーク サブネット上の仮想 IP アドレスにトラフィックを送信します。
  2. HAProxy は、仮想 IP トラフィックを Tanzu Kubernetes Grid クラスタ ノードの IP アドレス、または制御プレーン仮想マシンの IP アドレスのいずれかにロード バランシングします。HAProxy は、仮想 IP アドレスを要求して、その IP アドレスで受信されるトラフィックのロード バランシングを行うことができるようにします。
  3. 制御プレーン仮想マシンまたは Tanzu Kubernetes Grid クラスタ ノードは、スーパーバイザー または Tanzu Kubernetes Grid クラスタ内でそれぞれ実行されているターゲット ポッドにトラフィックを配信します。

隔離されたワークロード ネットワークを使用する スーパーバイザー トポロジと 2 つの仮想 NIC を使用する HA プロキシ

このトポロジでは、次のコンポーネントに対するネットワークを構成します。
  • Kubernetes 制御プレーン仮想マシン。Kubernetes 制御プレーン仮想マシンのトラフィックを処理するプライマリ ワークロード ネットワーク。
  • Tanzu Kubernetes Grid クラスタ ノード。ワークロード ネットワーク。これは、スーパーバイザー 上のすべての名前空間に割り当てられます。このネットワークは Tanzu Kubernetes Grid クラスタ ノードに接続します。
  • HAProxy の仮想 IP アドレス。この構成では、2 つの仮想 NIC を使用する HAProxy 仮想マシンがデプロイされます([デフォルト] 構成)。HAProxy 仮想マシンは、プライマリ ワークロード ネットワークか、名前空間に使用するワークロード ネットワークのいずれかに接続できます。また、HAProxy は、vSphere に既存の、プライマリ ネットワークおよびワークロード ネットワークにルーティング可能な仮想マシン ネットワークに接続することもできます。
スーパーバイザー は、プライマリ ワークロード ネットワークをバッキングする分散ポート グループに接続され、 Tanzu Kubernetes Grid クラスタは、ワークロード ネットワークをバッキングする分散ポート グループに接続されます。2 つのポート グループは、レイヤー 3 でルーティング可能である必要があります。VLAN を使用してレイヤー 2 の隔離を実装できます。レイヤー 3 トラフィックのフィルタリングは、IP ファイアウォールとゲートウェイを介して実現できます。
図 2. 隔離されたワークロード ネットワークを使用する スーパーバイザー

""
DevOps ユーザーまたは外部サービスのトラフィック パスは次のとおりです。
  1. DevOps ユーザーまたは外部サービスは、仮想 IP アドレスにトラフィックを送信します。トラフィックは、HAProxy が接続されているネットワークにルーティングされます。
  2. HAProxy は、仮想 IP トラフィックを Tanzu Kubernetes Grid ノードの IP アドレス、または制御プレーン仮想マシンのいずれかにロード バランシングします。HAProxy は、仮想 IP アドレスを要求して、その IP アドレスで受信されるトラフィックのロードバランシングを行うことができるようにします。
  3. 制御プレーン仮想マシンまたは Tanzu Kubernetes Grid クラスタ ノードは、Tanzu Kubernetes Grid クラスタ内で実行されているターゲット ポッドにトラフィックを配信します。

複数のワークロード ネットワークを使用する スーパーバイザー トポロジと 2 つの仮想 NIC を使用する HA プロキシ

このトポロジでは、1 つのポート グループがプライマリ ワークロード ネットワークとして動作するように、また、1 つの専用ポート グループが各名前空間に対するワークロード ネットワークとして機能するように構成できます。HAProxy は 2 つの仮想 NIC とともにデプロイされ([デフォルト] 構成)、プライマリ ワークロード ネットワークか、いずれかのワークロード ネットワークに接続することができます。プライマリおよびワークロード ネットワークにルーティング可能な、既存の仮想マシン ネットワークを使用することもできます。

このトポロジの DevOps ユーザーと外部サービスのトラフィック パスは、隔離されたワークロード ネットワーク トポロジの場合と同じです。
図 3. 複数の隔離されたワークロード ネットワークによってバッキングされる スーパーバイザー

""

複数のワークロード ネットワークを使用する スーパーバイザー トポロジと 3 つの仮想 NIC を使用する HA プロキシ

この構成では、3 つの仮想 NIC を使用する HAProxy 仮想マシンをデプロイします。これにより、HAProxy がフロントエンド ネットワークに接続されます。DevOps ユーザーと外部サービスは、フロントエンド ネットワーク上の仮想 IP アドレスを介して HAProxy にアクセスできます。本番環境では、3 つの仮想 NIC を使用する HA プロキシをデプロイすることを推奨します。
図 4. 3 つの仮想 NIC を使用する HAProxy をデプロイ

""

使用できるトポロジからの選択

使用できるトポロジから選択する前に、次のように環境のニーズを検討します。

  1. スーパーバイザーTanzu Kubernetes Grid クラスタの間でレイヤー 2 の隔離が必要ですか。
    1. いいえ:すべてのコンポーネントで使用される 1 つのワークロード ネットワークを持つ最もシンプルなトポロジ。
    2. はい:分離されたプライマリ ネットワークとワークロード ネットワークを持つ、隔離ワークロード ネットワーク トポロジ。
  2. Tanzu Kubernetes Grid クラスタの間でさらにレイヤー 2 の隔離が必要ですか。
    1. いいえ:分離されたプライマリ ネットワークとワークロード ネットワークを持つ、隔離ワークロード ネットワーク トポロジ。
    2. はい:名前空間ごとに分離されたワークロード ネットワークと専用のプライマリ ワークロード ネットワークを持つ、複数のワークロード ネットワーク トポロジ。
  3. DevOps ユーザーと外部サービスが Kubernetes 制御プレーン仮想マシンと Tanzu Kubernetes Grid クラスタ ノードに直接ルーティングされないようにする必要がありますか?
    1. いいえ:2 つの NIC を使用する HAProxy 構成。
    2. はい:3 つの NIC を使用する HAProxy 構成。この構成は、本番環境に推奨されます。

vSphere IaaS control plane での HAProxy ロード バランサの使用に関する考慮事項

HAProxy ロード バランサを使用する vSphere IaaS control plane の運用を計画する場合は、次の考慮事項に注意します。

  • HAProxy ロード バランサのテクニカル サポートを受けるには、HAProxyのサポート契約が必要です。VMware サポートでは HAProxy アプライアンスのサポートを提供できません。
  • HAProxy アプライアンスは、高可用性トポロジに利用できないシングルトンです。高可用性環境の場合、VMware は、NSX または NSX Advanced Load Balancer のフル インストールのいずれかを使用することを推奨しています。
  • フロントエンドに使用される IP アドレス範囲を後で拡張することはできません。ネットワークは将来の拡張に対応してサイジングする必要があります。