ネットワーク エンドポイント グループ(NEG)は、バックエンド エンドポイントまたはサービスのグループを指定する構成オブジェクトです。ゾーン NEG は、1 つのサブネット内の Google Cloud リソース用の IP アドレスまたは IP アドレス / ポートの組み合わせをまとめたゾーンリソースです。
NEG は、VM 全体ではなく、ソフトウェア サービスを表す IP アドレスとポートの論理グループを作成できる点でも有益です。Apache Mesos や Cloud Foundry などのその他のオーケストレーターによって管理されるマイクロサービス(Google Cloud VM で実行)の IP アドレスをエンドポイントにできます。
その他の NEG タイプの詳細については、以下をご覧ください。
ゾーン NEG には、NEG を構成するネットワーク エンドポイントのタイプに応じて 2 つのタイプがあります。2 種類のゾーン NEG は、それぞれ異なるユースケースとロードバランサ タイプをサポートしています。
GCE_VM_IP_PORT
エンドポイントを含むゾーン NEG: 次のロードバランサのバックエンドとしてサポートされます。GCE_VM_IP
エンドポイントを含むゾーン 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 を使用した内部パススルー ネットワーク ロードバランサのアーキテクチャの例を示しています。
バックエンド エンドポイントとしての 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 を使用する方法があります。
Kubernetes Ingress と NEG(推奨)
NEG が Ingress で使用される場合、Ingress コントローラで HTTP(S) ロードバランサの作成が容易になります。たとえば、仮想 IP アドレス、転送ルール、ヘルスチェック、ファイアウォール ルールなどを簡単に作成できます。構成方法については、Ingress によるコンテナ ネイティブのロード バランシングをご覧ください。
Ingress は、NEG の管理を簡素化する多くの機能を備えているため、コンテナ ネイティブのロード バランシングを使用する場合におすすめします。または、プロキシ ロードバランサを手動で作成し、GKE に NEG エンドポイントのメンバーシップを管理させることもできます。この点については、次の「スタンドアロン NEG」で説明します。
Ingress を使用してロードバランサを設定する方法については、Ingress によるコンテナ ネイティブのロード バランシングをご覧ください。
スタンドアロン NEG
スタンドアロン NEG を使用すると、GKE クラスタは Pod の IP アドレスとコンテナポートを表す
GCE_VM_IP_PORT
エンドポイントを持つゾーン NEG を作成できます。同時に、GKE の外部でロードバランサのコンポーネントを柔軟に構成できます。GKE でスタンドアロン ゾーン NEG を使用する例については、以下をご覧ください。
制限事項
- ゾーン NEG はレガシー ネットワークでは使用できません。
- NEG をバックエンドとして使用するバックエンド サービスの場合は、バックエンドとしてインスタンス グループを使用できません。
GCE_VM_IP
ゾーン NEG の制限事項:
GCE_VM_IP
エンドポイントを含むゾーン NEG は、内部パススルー ネットワーク ロードバランサと外部パススルー ネットワーク ロードバランサでのみサポートされます。default-port
プロパティはGCE_VM_IP
ゾーン NEG ではサポートされていません。
割り当て
- プロジェクトごとの NEG、バックエンド サービスごとの NEG、NEG ごとのエンドポイントなどの NEG 割り当てについては、ロード バランシングの割り当てページをご覧ください。
次のステップ
- ゾーン NEG の構成については、ゾーン ネットワーク エンドポイント グループを設定するをご覧ください。
- Google Kubernetes Engine でゾーン NEG を使用する方法については、Ingress によるコンテナ ネイティブのロード バランシングをご覧ください。