ゾーン ネットワーク エンドポイント グループの概要

ネットワーク エンドポイント グループ(NEG)は、バックエンド エンドポイントまたはサービスのグループを指定する構成オブジェクトです。ゾーン NEG は、1 つのサブネット内の Google Cloud リソース用の IP アドレスまたは IP アドレス / ポートの組み合わせをまとめたゾーンリソースです。

NEG は、VM 全体ではなく、ソフトウェア サービスを表す IP アドレスとポートの論理グループを作成できる点でも有益です。Apache MesosCloud Foundry などのその他のオーケストレーターによって管理されるマイクロサービス(Google Cloud VM で実行)の IP アドレスをエンドポイントにできます。

その他の NEG タイプの詳細については、以下をご覧ください。

ゾーン NEG には、NEG を構成するネットワーク エンドポイントのタイプに応じて 2 つのタイプがあります。2 種類のゾーン NEG は、それぞれ異なるユースケースとロードバランサ タイプをサポートしています。

GCE_VM_IP エンドポイントを含む NEG

パススルー ネットワーク ロードバランサは、GCE_VM_IP エンドポイントを含むゾーン NEG をサポートします。これらのゾーン NEG には、Compute Engine VM のネットワーク インターフェースのプライマリ内部 IPv4 アドレスを使用して表される 1 つ以上のエンドポイントが含まれています。

Google Cloud では IP アドレスを使用してエンドポイントを表しますが、GCE_VM_IP エンドポイントの目的はネットワーク インターフェース自体を特定することです。ネットワーク インターフェースは NEG のサブネット内に存在する必要があります。

GCE_VM_IP エンドポイントはネットワーク インターフェースを識別するため、GCE_VM_IP エンドポイントのポートを指定することはできません。

このタイプのエンドポイントは、内部パススルー ネットワーク ロードバランサと外部パススルー ネットワーク ロードバランサのバックエンド サービスでのみバックエンドとして使用できます。

GCE_VM_IP_PORT エンドポイントを含む NEG

これらのゾーン NEG には、次の IP アドレスまたは IP アドレスと宛先ポートの組み合わせが 1 つ以上含まれています。

  • VM ネットワーク インターフェースのプライマリ内部 IPv4 アドレス
  • VM ネットワーク インターフェースのプライマリ内部 IPv4 アドレスと宛先ポート番号
  • VM ネットワーク インターフェースに割り当てられたエイリアス IP アドレス範囲の内部 IPv4 アドレス
  • VM ネットワーク インターフェースに割り当てられたエイリアス IP アドレス範囲の内部 IPv4 アドレスと宛先ポート番号

GCE_VM_IP_PORT エンドポイントを含むネットワーク インターフェースは、NEG のサブネット内に存在する必要があります。GCE_VM_IP_PORT エンドポイントのポート番号を省略すると、Google Cloud はエンドポイントに NEG のデフォルトのポート番号を使用します。

このタイプのゾーン NEG バックエンドでは IP アドレスとポートを指定できるため、VM インスタンス内で実行中のアプリケーションやコンテナ間で細かくトラフィックを分散できます(つまり、コンテナ ネイティブのロード バランシングが可能になります)。GKE は、次のものに対して GCE_VM_IP_PORT エンドポイントを使用します。

GCE_VM_IP_PORT エンドポイントが GKE で管理されるゾーン NEG を使用するセルフマネージド ロードバランサを作成できます。詳細については、スタンドアロン ゾーン NEG によるコンテナ ネイティブのロード バランシングをご覧ください。

アプリケーション ロードバランサとプロキシ ネットワーク ロードバランサは、GCE_VM_IP_PORT エンドポイントを含むゾーン NEG をサポートします。

エンドポイントの仕様

NEG を作成するときは、ゾーン、ネットワーク、サブネットを選択します。すべてのエンドポイント IP アドレスは、ゾーン NEG と同じサブネット内に存在する必要があります。

選択したネットワークが自動モードの VPC ネットワークである場合は、サブネットの指定を省略できます。その場合も、ゾーン NEG には特定のサブネットが紐づけられます。ゾーン NEG を作成する際に自動モードの VPC ネットワークを指定して、サブネットを指定しない場合、ゾーン NEG に選択したゾーンを含むリージョンにサブネットが自動的に作成され、そのサブネットが使われます。

作成するゾーン NEG のタイプは、NEG の作成時に指定されます(GCE_VM_IP または GCE_VM_IP_PORT)。これにより、NEG がサポートするエンドポイントのタイプが決まります。

GCE_VM_IP_PORT ゾーン NEG

GCE_VM_IP_PORT ゾーン NEG の場合は、次の条件を満たしている必要があります。

  • 各 VM エンドポイントの名前を指定する必要があります。

  • 各エンドポイント VM は NEG と同じゾーンに配置する必要があります。

  • NEG 内のエンドポイントはすべて、一意の IP アドレスとポートの組み合わせが必要です。一意のエンドポイント IP アドレスとポートの組み合わせは、複数の NEG から参照できます。

  • 各エンドポイント VM は、NEG と同じ VPC ネットワーク内にネットワーク インターフェースを持つ必要があります。エンドポイント IP アドレスは NEG と同じサブネットに関連付ける必要があります。

  • 各 NEG は、NEG あたりのエンドポイントの最大数までサポートします。エンドポイントは、多数の一意の VM 間で分散させることも、1 つの VM に配置することもできます。

GCE_VM_IP_PORT NEG では、エンドポイントを追加する際に IP アドレスとポート、IP アドレスのみ、またはいずれも指定しないように選択できます。

  • IP アドレスとポートを指定する場合は、IP アドレスは、同じネットワーク インターフェース上の VM のプライマリ内部 IP アドレスか、同じネットワーク インターフェース上のエイリアス IP のいずれかになります。ポートは自由に選択できます。

  • IP アドレスのみを指定する場合、IP アドレスは同じネットワーク インターフェース上の VM のプライマリ内部 IP アドレスか、同じネットワーク インターフェース上のエイリアス IP アドレスのいずれかになります。使用されるポートは、NEG のデフォルト ポートです。

  • 両方を省略すると、Google Cloud は VM のプライマリ内部 IP アドレスを選択し、NEG のデフォルト ポートを使用します。

GCE_VM_IP ゾーン NEG

GCE_VM_IP ゾーン NEG の場合は、次の条件を満たしている必要があります。

  • 各 VM エンドポイントの名前を指定する必要があります。

  • 各エンドポイント VM は NEG と同じゾーンに配置する必要があります。

  • GCE_VM_IP NEG 内の各エンドポイントは、一意の IP アドレスである必要があります。一意のエンドポイント IP アドレスは、複数の NEG から参照できます。

  • GCE_VM_IP NEG は常に特定のネットワークとサブネットワークに関連付けられます。エンドポイントを追加するときに、IP アドレスを指定するかどうかを選択できます。IP アドレスを指定する場合は、関連付けられている VM インスタンスの、NEG と同じサブネットワーク上のプライマリ内部 IP アドレスに設定する必要があります。マルチ NIC VM インスタンスの場合、その NEG と同じサブネットワークにある限り、どのネットワーク インターフェースのプライマリ内部 IP アドレスでも NEG に追加できます。

  • 各 NEG は、NEG あたりのエンドポイントの最大数までサポートします。エンドポイントは、すべての一意の VM 間で分散している必要があります。1 つのサブネットに単一の VM の複数のネットワーク インターフェースを関連付けることはできないため、単一の VM に複数のエンドポイントを配置することはできません。

ゾーン NEG によるロード バランシング

ゾーン NEG は、ロードバランサのバックエンド サービスのバックエンドとして使用できます。ゾーン NEG をバックエンド サービスのバックエンドとして使用する場合、そのバックエンド サービス内の他のバックエンドはすべて同じタイプのゾーン NEG(GCE_VM_IP または GCE_VM_IP_PORT に統一)である必要があります。同じバックエンド サービスのバックエンドとしてインスタンス グループとゾーン NEG の両方を使用することはできません。

同じネットワーク エンドポイントを複数のゾーン NEG に追加できます。複数のバックエンド サービスのバックエンドとして、同じゾーン NEG を使用できます。

GCE_VM_IP_PORT ゾーン NEG は、バックエンド サービスのプロトコルに応じて、RATE バランシング モードまたは CONNECTION バランシング モードのいずれかになります。サポートされているロードバランサでは、ターゲット容量を定義する必要があります。

GCE_VM_IP ゾーン NEG は CONNECTION バランシング モードを使用する必要があります。また、内部パススルー ネットワーク ロードバランサと外部パススルー ネットワーク ロードバランサは、ターゲット容量の設定をサポートしていません。

パススルー ネットワーク ロードバランサ

GCE_VM_IP エンドポイントを含むゾーン NEG は、内部パススルー ネットワーク ロードバランサと外部パススルー ネットワーク ロードバランサのバックエンド サービスのバックエンドとしてのみ使用できます。

GCE_VM_IP エンドポイントを含む NEG の主なユースケースについては、次のセクションをご覧ください。

エンドポイントの柔軟なグループ化

インスタンス グループと同様に、同じ NEG を複数のパススルー ネットワーク ロードバランサのバックエンドとして使用できます。インスタンス グループとは異なり、各 NEG エンドポイントは複数の NEG に関連付けることができるため、それぞれの NEG を 1 つ以上のパススルー ネットワーク ロードバランサのバックエンドとして使用できます。インスタンス グループとは異なり、VM インスタンスは 1 つのインスタンス グループにしか含まれないという制約はありません。

次の図は、共有 VM を使用した内部パススルー ネットワーク ロードバランサのアーキテクチャの例を示しています。

重複する GCE_VM_IP ゾーン NEG を持つ内部パススルー ネットワーク ロードバランサ。
重複するゾーン NEG を持つ内部パススルー ネットワーク ロードバランサ(クリックして拡大)。

バックエンド エンドポイントとしての nic0 以外のインターフェース

GCE_VM_IP エンドポイントを含むゾーン NEG では、VM の nic0 以外のネットワーク インターフェースへのロード バランシングが可能になります。これは、一般的に nic0 を管理作業専用とするサードパーティのアプライアンス VM と統合する場合に便利です。GCE_VM_IP NEG を使用すると、同じ VM の nic0 以外のネットワーク インターフェースをパススルー ネットワーク ロードバランサの NEG バックエンドに接続できます。

GKE のサブセット化

GKE は、GCE_VM_IP ゾーン NEG とサブセット化を使用して、次のように内部パススルー ネットワーク ロードバランサのスケーラビリティを改善します。

サブセット化しない場合、GKE はゾーンごとに、そのゾーンに含まれるすべてのノードプールからのクラスタのノードで構成される 1 つの非マネージド インスタンス グループを作成します。これらのゾーン インスタンス グループは、1 つ以上の内部 LoadBalancer Service(および NEG 自体を使用しない外部 Ingress)のバックエンドとして使用されます。

サブセット化した場合、GKE は内部 LoadBalancer Service ごとに GCE_VM_IP ゾーン NEG を作成します。同じエンドポイントを複数のゾーン NEG のメンバーにすることもできます。インスタンス グループとは異なり、Google Cloud は同じエンドポイントを含む複数のゾーン NEG にロードバランスできます。

サブセット化すると、250 を超えるノードを持つクラスタの内部 LoadBalancer Service に効率的にトラフィックを分散できます。たとえば、300 ノードの GKE クラスタには、NEG に 25 のノードを持つ内部 LoadBalancer Service がある場合があります。その Service にサービスを提供する Pod が 25 あるからです。この Service のインスタンス グループのバックエンドに 300 ノードすべてを追加する必要はありません。

NEG、転送ルール、バックエンド サービス、その他の Google Cloud ネットワーク リソースの割り当ては引き続き適用されます。

詳細については、内部パススルー ネットワーク ロードバランサのサブセット化の使用をご覧ください。

アプリケーション ロードバランサとプロキシ ネットワーク ロードバランサ

次の図では、GCE_VM_IP_PORT エンドポイントを含むゾーン NEG がバックエンドである場合のロードバランサの構成コンポーネントを示します。

ロード バランシングのゾーン ネットワーク エンドポイント グループ。
ロード バランシングのゾーン ネットワーク エンドポイント グループ(クリックして拡大)

これらのロードバランサのアーキテクチャ要件の詳細については、以下をご覧ください。

GCE_VM_IP_PORT ゾーン NEG の主なユースケースは、コンテナネイティブのロード バランシングです。これにより、VM で実行されているコンテナ(GKE クラスタの Pod IP アドレスなど)にトラフィックを直接分散できます。

コンテナ ネイティブのロード バランシングにより、ロードバランサは Pod を直接ターゲットにして、VM レベルではなく Pod レベルでロード バランシングの決定を行うことができます。

次の例は、VM のコンテナ内で実行されるマイクロサービス間で、ロードバランサがトラフィックを分散する方法を示しています。VM は、サブネットのエイリアス IP 範囲を使用するように構成され、コンテナによって使用されるアドレスです。

コンテナを使用したゾーン ネットワーク エンドポイント グループのロード バランシング。
コンテナを使用したゾーン ネットワーク エンドポイント グループのロード バランシング(クリックして拡大)

コンテナ ネイティブのロード バランシングを構成するには、GKE Ingress が管理する NEG を使用する方法と、スタンドアロン NEG を使用する方法があります。

制限事項

  • ゾーン NEG はレガシー ネットワークでは使用できません。
  • NEG をバックエンドとして使用するバックエンド サービスの場合は、バックエンドとしてインスタンス グループを使用できません。

GCE_VM_IP ゾーン NEG の制限事項:

  • GCE_VM_IP エンドポイントを含むゾーン NEG は、内部パススルー ネットワーク ロードバランサと外部パススルー ネットワーク ロードバランサでのみサポートされます。
  • default-port プロパティGCE_VM_IP ゾーン NEG ではサポートされていません。

割り当て

次のステップ