網路端點群組 (NEG) 是一項設定物件,可用來指定一組後端端點或服務。區域 NEG 為區域資源,代表單一子網路中 Google Cloud 資源的 IP 位址或 IP 位址與通訊埠組合集合。
您可以將網路端點群組視為網路端點的集合。NEG 中的每個端點都必須指向 VM 網路介面的不重複 IP 位址。網路端點只能屬於一個網路端點群組。單一 IP 位址不得由 NEG 中的多個端點參照。不過,不同 NEG 中的端點可以參照單一 IP 位址。下圖以風格化的方式呈現這個概念。在圖中,「IP 位址 - 2」和「IP 位址 - 3」是由位於不同網路端點群組的網路端點參照。
區域 NEG 可讓您執行下列操作:
將封包路由至 VM 執行個體的任何網路介面,包括
nic0以外的介面。您可以只建立代表「軟體服務」的 IP 位址和通訊埠的邏輯群組,而不必建立整個 VM 的邏輯群組。建立彈性 IP 位址集,其中一個 IP 位址可附加至多個 NEG,而每個 NEG 可有不同但可能重疊的 IP 位址集。
視構成 NEG 的網路端點類型而定,區域 NEG 分成兩種類型。這兩種類型的區域 NEG 支援不同的用途和負載平衡器類型。
具有
GCE_VM_IP端點的區域 NEG 可做為下列負載平衡器的後端:具有
GCE_VM_IP_PORT端點的區域 NEG 可做為下列 Proxy 型負載平衡器的後端:
具有 GCE_VM_IP 個端點的 NEG
這些可用區 NEG 含有一或多個 GCE_VM_IP 端點,每個端點都有 Compute Engine VM 網路介面的主要內部 IPv4 位址。
使用 GCE_VM_IP 端點時,您會選取網路介面的主要 IP 位址,因此提供的精細程度與直接選取網路介面類似。
GCE_VM_IP 端點無法指向別名 IPv4 範圍的 IP 位址。
GCE_VM_IP 端點參照的網路介面必須與 NEG 位於同一個子網路。
如下表所示,GCE_VM_IP 端點可以參照 VM 的網路介面,其堆疊類型可以是僅限 IPv4 或雙重堆疊。
您無法將同時為 IPv4 和 IPv6 的端點 (「雙重堆疊端點」) 新增至GCE_VM_IP區域 NEG。換句話說,建立 GCE_VM_IP 端點時,只能使用單一 IP 位址。不過,GCE_VM_IP區域 NEG 端點可以參照 VM 的網路介面,其堆疊類型為僅限 IPv4 或雙重堆疊。
| 網路端點 | 相容的 VM 網路介面 |
|---|---|
| IPv4 端點 (主要) | 僅限 IPv4 的介面 |
| IPv4 端點 (主要) | 雙堆疊介面 |
由於 GCE_VM_IP 端點會識別網路介面,因此您無法使用 GCE_VM_IP 端點指定通訊埠。
這類端點只能在內部直通式網路負載平衡器和外部直通式網路負載平衡器的後端服務中做為後端使用。
具有 GCE_VM_IP_PORT 個端點的 NEG
這些可用區 NEG 包含一或多個 GCE_VM_IP_PORT 端點,每個端點都具有下列其中一種 IP 位址組合,以及目的地通訊埠:
主要 IPv4 位址 + 連接埠:VM 網路介面的主要內部 IPv4 位址,加上目的地連接埠號碼
別名 IPv4 位址 + 通訊埠:指派給 VM 網路介面的別名 IP 位址範圍中的內部 IPv4 位址,加上目的地通訊埠號碼
主要 IPv4 位址 + 任何 IPv6 位址 + 通訊埠:VM 網路介面的主要內部 IPv4 位址,以及指派給 VM 網路介面的
/96範圍中任何 IPv6 位址 (/128) 加上目的地通訊埠號碼別名 IPv4 位址 + 任何 IPv6 位址 + 通訊埠:指派給 VM 網路介面的別名 IP 位址範圍中的內部 IPv4 位址,以及指派給 VM 網路介面的
/96範圍中的任何 IPv6 位址(/128) 位址,再加上目的地通訊埠號碼
相較於 GCE_VM_IP 端點,GCE_VM_IP_PORT 端點不僅可選取網路介面的主要 IP 位址,還能選取任何 IP 位址,因此 GCE_VM_IP_PORT 端點提供的精細程度,比單純選取網路介面更高。
GCE_VM_IP_PORT 端點參照的網路介面必須與 NEG 位於同一個子網路。如果您從GCE_VM_IP_PORT端點 Google Cloud 省略通訊埠號碼,則會使用 NEG 的預設通訊埠號碼。
如下表所示,GCE_VM_IP_PORT 端點可以參照VM 的網路介面,其堆疊類型可以是僅支援 IPv4 或雙重堆疊。
| 網路端點 | 相容的 VM 網路介面 |
|---|---|
| IPv4 端點 (主要或別名) | 僅限 IPv4 的介面 |
| IPv4 端點 (主要或別名) | 雙堆疊介面 |
IPv4 (主要或別名) 和 IPv6 (來自 也稱為「雙堆疊」端點 |
雙堆疊介面 |
由於這些區域 NEG 後端可讓您指定 IP 位址和通訊埠,因此您可以精細地將流量發布到在 VM 執行個體「內部」執行的應用程式或容器,也就是容器原生負載平衡。GKE 會使用 GCE_VM_IP_PORT 端點執行下列作業:
您可以建立自行管理的負載平衡器,使用區域性 NEG,其GCE_VM_IP_PORT端點由 GKE 管理。詳情請參閱透過獨立區域 NEG 使用容器原生負載平衡功能。
應用程式負載平衡器和 Proxy 網路負載平衡器支援具有 GCE_VM_IP_PORT 端點的可用區 NEG。
端點規格
建立 NEG 時,要選取區域、網路和子網路。
如果您選取的網路為自動模式虛擬私有雲網路,就不必指定子網路。不過,子網路仍會與區域 NEG 建立關聯。如果您指定自動模式 VPC 網路,但建立區域 NEG 時未指定子網路,則使用的子網路,就是您為區域 NEG 選取的區域中自動建立的子網路。
建立 NEG 時 (GCE_VM_IP 或 GCE_VM_IP_PORT),系統會指定您建立的區域 NEG 類型。這會決定 NEG 支援的端點類型。
GCE_VM_IP 區域性 NEG
在指定的 NEG 中,每個 GCE_VM_IP 端點實際上代表一個網路介面。
GCE_VM_IP 可用區性 NEG 必須符合下列條件:
您必須為每個端點指定 VM 名稱。
每個端點 VM 都必須與 NEG 位於同一個區域。
GCE_VM_IPNEG 中的每個端點都必須是不重複的 IP 位址。多個 NEG 可以參照同一個端點 IP 位址。每個
GCE_VM_IPNEG 一律會與網路和子網路建立關聯。只要多 NIC VM 執行個體的任何網路介面 IP 位址與 NEG 位於同一個子網路,即可新增至 NEG。每個 NEG 最多支援每個 NEG 的端點數量上限。端點必須分配給所有不重複的 VM。多個端點無法位於單一 VM 上,因為 VM 無法有多個與相同子網路相關聯的網路介面。
為 GCE_VM_IP NEG 新增端點時,您可以選擇是否指定 IP 位址:
如果指定 IP 位址,則必須設為 VM 網路介面的主要內部 IPv4 位址。
如果省略 IP 位址,系統會根據 NEG 子網路中的網路介面選取 IP 位址。如果端點參照僅支援 IPv4 或雙重堆疊的網路介面,系統會選取 VM 網路介面的主要內部 IPv4 位址做為端點 IP 位址。
請注意,指定 IP 位址是多餘的,因為與 NEG 相關聯的子網路中只能有一個網路介面。
GCE_VM_IP_PORT 區域性 NEG
在指定的 NEG 中,每個 GCE_VM_IP_PORT 端點不僅可代表網路介面的主要 IP 位址,也可代表網路介面的任何 IP 位址。
GCE_VM_IP_PORT 可用區性 NEG 必須符合下列條件:
您必須為每個端點指定 VM 名稱。
每個端點 VM 都必須與 NEG 位於同一個區域。
NEG 中的每個端點都必須是不重複的 IP 位址與通訊埠組合。 多個 NEG 可以參照不重複的端點 IP 位址和通訊埠組合。
每個端點 VM 都必須在與 NEG 相同的 VPC 網路中,具備網路介面。端點 IP 位址必須與指定為 NEG 的子網路相關聯。
每個 NEG 最多支援每個 NEG 的端點數量上限。端點可分散在多個不重複的 VM 中,或全部位於一個 VM 上。
為 GCE_VM_IP_PORT NEG 新增端點時,您可以選擇指定 IP 位址和通訊埠、僅指定 IP 位址,或兩者都不指定:
如果您指定 IP 位址和連接埠,IP 位址可以是 IPv4 位址或 IPv4 和 IPv6 位址。使用的通訊埠由您選擇。 如要以直覺的方式瞭解各種組合,請參閱本文的「具有
GCE_VM_IP_PORT端點的 NEG」一節。IPv4 位址可以是主要內部 IP 位址,也可以是網路介面上別名 IP 位址範圍內的內部 IPv4 位址。IPv6 位址可以是從指派給 VM 網路介面的
/96範圍中,選取的任何 IPv6 位址 (/128)。使用的通訊埠由您選擇。如果您只指定 IP 位址,該 IP 位址可以是 IPv4 位址或 IPv4 和 IPv6 位址。使用的通訊埠是端點的 NEG 預設通訊埠編號。如要以直覺的方式思考各種組合,請參閱本文的「具有
GCE_VM_IP_PORT端點的 NEG」一節。IPv4 位址可以是主要內部 IP 位址,也可以是網路介面上別名 IP 位址範圍內的內部 IPv4 位址。IPv6 位址可以是從指派給 VM 網路介面的
/96範圍中,選取的任何 IPv6 位址 (/128)。使用的通訊埠是端點的 NEG 預設通訊埠編號。如果省略 IP 位址和連接埠,系統會根據 NEG 子網路中的網路介面選取 IP 位址。如果端點參照僅支援 IPv4 或雙重堆疊的網路介面,系統會選取 VM 網路介面的主要內部 IPv4 位址做為端點 IP 位址。
至於通訊埠, Google Cloud 會使用端點的 NEG 預設通訊埠編號。
使用區域 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 只能做為後端服務的後端,用於內部直通式網路負載平衡器和外部直通式網路負載平衡器。
如要瞭解具有端點的 NEG 主要用途,請參閱下列章節。GCE_VM_IP
彈性端點分組
與執行個體群組類似,您可以將同一個 NEG 做為多個直通網路負載平衡器的後端。與執行個體群組不同,NEG 端點可以屬於多個 NEG,而每個 NEG 都可以做為一或多個直通網路負載平衡器的後端。與執行個體群組相比,您不會受到 VM 執行個體只能屬於單一執行個體群組的限制。
下圖顯示範例內部直通式網路負載平衡器架構,其中包含共用 VM。
非 nic0 介面做為後端端點
具有 GCE_VM_IP 端點的可用區 NEG 可將負載平衡至 VM 的非 nic0 網路介面。整合第三方設備 VM 時,這項功能會很有用,因為這類 VM 通常會保留 nic0 供管理作業使用。使用 GCE_VM_IP NEG 時,相同 VM 的任何非 nic0 網路介面都可以附加至直通式網路負載平衡器的 NEG 後端。
GKE 子設定
GKE 會使用GCE_VM_IP可用區 NEG 和子集,以提升內部直通式網路負載平衡器的擴充性,做法如下:
如果沒有子集,GKE 會為每個區域建立一個非代管執行個體群組,其中包含該區域中所有節點集區的叢集節點。這些區域執行個體群組會做為一或多個內部 LoadBalancer 服務的後端 (以及不使用 NEG 的外部 Ingress)。
透過子集化,GKE 會為每個內部 LoadBalancer Service 建立GCE_VM_IP可用區 NEG。同一個端點可以屬於多個可用區 NEG。與執行個體群組不同, Google Cloud 可以負載平衡至多個包含相同端點的區域 NEG。
在節點超過 250 個的叢集中,子集可更有效率地將流量分配至內部 LoadBalancer 服務。舉例來說,300 個節點的 GKE 叢集可能有一個內部 LoadBalancer 服務,NEG 中有 25 個節點,因為該服務有 25 個提供服務的 Pod。不必將所有 300 個節點都新增至這項服務的執行個體群組後端。
請注意,NEG、轉送規則、後端服務和其他 Google Cloud 網路資源的配額仍適用。
詳情請參閱使用內部直通式網路負載平衡器子集。
應用程式負載平衡器和 Proxy 網路負載平衡器
下圖顯示使用具有 GCE_VM_IP_PORT 端點的區域 NEG 做為後端的負載平衡器設定元件:
如要進一步瞭解這些負載平衡器的架構需求,請參閱:
GCE_VM_IP_PORT區域 NEG 的主要用途是容器原生負載平衡,因此您可以直接將流量分配給在 VM 上執行的容器,例如 GKE 叢集中的 Pod IP 位址。
容器原生負載平衡可讓負載平衡器直接指定 Pod,並在 Pod 層級 (而非 VM 層級) 做出負載分配決策。
下列範例說明負載平衡器如何將流量分配給 VM 容器中執行的微服務。這些 VM 設定為使用子網路的別名 IP 範圍,而這些範圍是容器使用的位址。
您可以透過兩種方式設定容器原生負載平衡:使用由 GKE Ingress 管理的 NEG,或使用獨立的 NEG。
搭配 NEG 的 Kubernetes Ingress (建議)
將 NEG 與 Ingress 搭配使用時,Ingress 控制器會協助建立 HTTP(S) 負載平衡器的所有層面。包括建立虛擬 IP 位址、轉送規則、健康狀態檢查、防火牆規則等。如要瞭解如何設定這項功能,請參閱透過 Ingress 進行容器原生負載平衡。
建議使用 Ingress 將 NEG 用於容器原生負載平衡,因為 Ingress 具有多項功能,可簡化 NEG 管理作業。或者,您也可以手動建立 Proxy 負載平衡器,但仍由 GKE 管理 NEG 端點成員資格,詳情請見下一個重點 (獨立 NEG)。
如需透過 Ingress 設定負載平衡器的操作說明,請參閱「透過 Ingress 使用容器原生負載平衡功能」。
獨立 NEG
透過獨立 NEG,GKE 叢集可以建立區域 NEG,其中包含代表 Pod IP 位址和容器通訊埠的
GCE_VM_IP_PORT端點,同時讓您彈性地在 GKE 外部設定負載平衡器元件。如需搭配 GKE 使用獨立區域 NEG 的範例,請參閱:
限制
- 舊版網路無法使用區域 NEG。
- 如果某個後端服務使用 NEG 做為後端,就不能同時使用執行個體群組做為後端。
GCE_VM_IP 可用區 NEG 的限制
- 具有
GCE_VM_IP端點的可用區 NEG 僅支援內部直通式網路負載平衡器和外部直通式網路負載平衡器。 GCE_VM_IP可用區 NEG 不支援default-port屬性。
配額
- 如要瞭解 NEG 配額 (例如每個專案的 NEG 數、每個後端服務的 NEG 數,以及每個 NEG 的端點數),請參閱負載平衡配額頁面。
後續步驟
- 如要瞭解如何設定區域性 NEG,請參閱「設定區域性網路端點群組」。
- 如要瞭解如何在 Google Kubernetes Engine 中使用區域 NEG,請參閱「透過 Ingress 進行容器原生負載平衡」。