網路端點群組 (NEG) 是網路端點的集合。NEG 中的每個端點都必須指向 VM 網路介面的專屬 IP 位址。一個網路端點只能屬於一個網路端點群組。單一 IP 位址「不得」由 NEG 中的多個端點參照。不過,不同 NEG 中的端點可以參照單一 IP 位址。下圖以風格化的方式呈現這個概念。在圖表中,「IP 位址 - 2」和「IP 位址 - 3」是由位於不同網路端點群組的網路端點參照。
可用區 NEG 是可用區資源,代表單一虛擬私有雲子網路內 Google Cloud 資源的 IP 位址集合,或 IP 位址和通訊埠組合。可用區 NEG 可讓您執行下列操作:
將封包轉送至 VM 執行個體的任何網路介面,包括
nic0以外的介面。這樣一來,您就能建立 IP 位址和通訊埠的邏輯群組,代表軟體服務,而非整個 VM。建立一組彈性的不重複端點 IP 位址,或 IP 位址和通訊埠。
視組成 NEG 的網路端點類型而定,可用區 NEG 分為兩種類型。這兩種可用區 NEG 支援不同的用途和負載平衡器類型。
具有
GCE_VM_IP端點的可用區 NEG 可做為下列負載平衡器的後端:具有
GCE_VM_IP_PORT端點的可用區 NEG 可做為下列 Proxy 負載平衡器的後端:
含有 GCE_VM_IP 個端點的 NEG
這些可用區 NEG 包含一或多個 GCE_VM_IP 端點,每個端點都具有下列其中一個 IP 位址:
- Compute Engine VM 網路介面的主要內部 IPv4 位址。
- 指派給 Compute Engine VM 網路介面的
/96範圍內第一個 IPv6 位址 (/128)。
使用 GCE_VM_IP 端點時,您可以選取網路介面的主要內部 IPv4 位址或第一個 IPv6 位址,這提供的精細程度與直接選取網路介面類似。
GCE_VM_IP 端點無法指向別名 IPv4 範圍中的 IP 位址。GCE_VM_IP 端點參照的網路介面必須與 NEG 位於相同子網路。
如下表所示,GCE_VM_IP 端點可以參照堆疊類型為僅限 IPv4、僅限 IPv6 或雙重堆疊的 VM 網路介面。您「無法」將同時為 IPv4 和 IPv6 的端點 (雙重堆疊端點) 新增至 GCE_VM_IP 區域 NEG。換句話說,建立 GCE_VM_IP 端點時,只能使用一個 IP 位址。
| 網路端點 | 相容的 VM 網路介面 |
|---|---|
| IPv4 端點 (主要) | 僅限 IPv4 的介面 |
| IPv4 端點 (主要) | 雙協定介面 |
| IPv6 端點 (範圍內第一個) (預先發布版) | 僅限 IPv6 的介面 |
| IPv6 端點 (範圍內第一個) (預先發布版) | 雙協定介面 |
由於 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),加上目的地通訊埠編號IPv6 位址 + 通訊埠:指派給 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、僅限 IPv6 或雙重堆疊。
| 網路端點 | 相容的 VM 網路介面 |
|---|---|
| IPv4 端點 (主要或別名) | 僅限 IPv4 的介面 |
| IPv4 端點 (主要或別名) | 雙協定介面 |
IPv6 端點 (/96 範圍內的任何端點) (預先發布版) |
僅限 IPv6 的介面 |
IPv6 端點 (/96 範圍內的任何端點) (預先發布版) |
雙協定介面 |
IPv4 (主要或別名) 和 IPv6 ( 也稱為雙堆疊端點 |
雙協定介面 |
由於這些可用區 NEG 後端可讓您指定 IP 位址和通訊埠,因此您能以精細的方式,在 VM 執行個體「內」執行的應用程式或容器之間分配流量,也就是容器原生負載平衡。GKE 會將 GCE_VM_IP_PORT 端點用於:
您可以建立自行管理的負載平衡器,使用GCE_VM_IP_PORT端點由 GKE 管理的可用區 NEG。詳情請參閱「透過獨立可用區 NEG 使用容器原生負載平衡功能」。
應用程式負載平衡器和 Proxy 網路負載平衡器支援具有 GCE_VM_IP_PORT 端點的可用區 NEG。
端點規格
您新增至可用區 NEG 的每個端點都必須是專屬的負載平衡器目標介面。每個可用區 NEG 最多支援每個 NEG 的端點數量上限。
GCE_VM_IP 個可用區 NEG 後端和網路介面
建立含有 GCE_VM_IP 端點的新可用區 NEG 時,您必須指定可用區、虛擬私有雲網路,以及該網路中的子網路。區域 NEG 建立後,這些屬性都無法變更。
NEG 的子網路必須與 NEG 的可用區位於相同區域。如果 NEG 的網路是自動模式虛擬私有雲網路,則可省略指定 NEG 的子網路。如未指定子網路, Google Cloud 會將 NEG 的子網路設為 NEG 可用區所在區域中自動建立的子網路。
具有 GCE_VM_IP 端點的可用區 NEG 會強制執行下列規則,以新增端點:
如果只為端點指定執行個體名稱,則執行個體必須與 NEG 位於相同可用區,且在 NEG 的子網路中具有負載平衡器目標介面。如果端點參照僅限 IPv4 或雙重堆疊網路介面,系統會選取執行個體網路介面的主要內部 IPv4 位址,做為端點 IP 位址。如果端點參照僅限 IPv6 的網路介面,系統會選取執行個體網路介面的第一個 IPv6 位址 (
/128) 做為端點 IP 位址。如果同時指定執行個體名稱和 IP 位址來新增端點,執行個體必須與 NEG 位於相同可用區。IP 位址必須設為執行個體網路介面的主要內部 IPv4 位址或第一個 IPv6 位址 (
/128)。
由於執行個體在 NEG 的子網路中只能有一個 NIC,因此每個可用區 NEG 只能有一個 GCE_VM_IP 端點。如果是 GCE_VM_IP 端點,端點 IP 位址是備援標籤,其值必須是主要內部 IPv4 位址,或負載平衡器目標介面的第一個 IPv6 位址 (/128)。負載平衡封包的實際目的地 IP 位址,與直通式網路負載平衡器轉送規則相符。
GCE_VM_IP_PORT 個可用區 NEG 後端和網路介面
使用 GCE_VM_IP_PORT 端點建立新的可用區 NEG 時,您必須指定可用區、預設通訊埠、虛擬私有雲網路,以及該網路中的子網路。區域 NEG 建立後,即無法變更這些屬性。
NEG 的子網路必須與 NEG 的可用區位於相同區域。如果 NEG 的網路是自動模式虛擬私有雲網路,則可省略指定 NEG 的子網路。如未指定子網路, Google Cloud 會將 NEG 的子網路設為 NEG 可用區所在區域中自動建立的子網路。
具有 GCE_VM_IP_PORT 端點的可用區 NEG 會強制執行下列規則,以新增端點:
如果只為端點指定執行個體名稱,則執行個體必須與 NEG 位於相同可用區,且在 NEG 的子網路中具有負載平衡器目標介面。端點的 IP 位址會設為負載平衡器目標介面的主要內部 IPv4 位址,端點的通訊埠則會設為 NEG 的預設通訊埠。
如果您為端點指定執行個體名稱和 IP 位址,或執行個體名稱、IP 位址和通訊埠資訊,則執行個體必須與 NEG 位於相同可用區,且:
如果指定 IPv4 位址,該位址必須是主要內部 IPv4 位址,或是與 NEG 子網路中負載平衡器目標介面相關聯的別名 IP 範圍中的 IPv4 位址。
如果指定 IPv6 位址,該位址必須是 NEG 子網路中負載平衡器目標介面
/96IPv6 位址範圍內的單一 IPv6 位址 (/128)。端點的通訊埠是您指定的通訊埠。如未指定通訊埠,端點的通訊埠會設為 NEG 的預設通訊埠。
使用可用區 NEG 進行負載平衡
可用做連至負載平衡器後端服務的後端群組。如果使用可用區 NEG 做為後端群組,後端服務的其他後端群組必須是具有相同類型端點 (全部為 GCE_VM_IP 或 GCE_VM_IP_PORT) 的可用區 NEG。您無法在同一項後端服務中,同時使用執行個體群組和可用區 NEG 做為後端群組。
您可以將同一個網路端點新增至多個可用區 NEG。您也可以將同一個可用區 NEG 做為多項後端服務的後端。
具有 GCE_VM_IP_PORT 端點的可用區 NEG 支援 Proxy 負載平衡器,平衡模式則定義於「應用程式負載平衡器和 Cloud Service Mesh 的平衡模式」和「Proxy 網路負載平衡器的平衡模式」。
直通式網路負載平衡器支援具有 GCE_VM_IP 端點的可用區 NEG,平衡模式則如「直通式網路負載平衡器的平衡模式」一節所述。
彈性端點分組
與執行個體群組一樣,您可以將同一個 NEG 做為多個直通式網路負載平衡器的後端。與執行個體群組不同,NEG 端點可以屬於多個 NEG,而每個 NEG 都能做為一或多個直通式網路負載平衡器的後端。與執行個體群組相比,您不會受到 VM 執行個體只能屬於單一執行個體群組的限制。
下圖顯示採用共用 VM 的內部直通式網路負載平衡器架構範例。
負載平衡網路介面和端點
可用區 NEG 支援將負載平衡流量分配給 nic0 vNIC、非 nic0 vNIC 和 Dynamic NIC。詳情請參閱「負載平衡器目標介面」。
如要瞭解如何搭配使用可用區 NEG 和直通式網路負載平衡器,請參閱下列文件:
GKE 和可用區 NEG
GKE 會使用具有 GCE_VM_IP 和 GCE_VM_IP_PORT 端點的可用區 NEG:
GKE 會在每個可用區為各項 LoadBalancer Service 建立專屬的
GCE_VM_IPNEG。這些 NEG 包含叢集節點 VM 做為端點,GKE 會根據服務的externalTrafficPolicy和叢集中的節點數量選取這些端點。詳情請參閱「關於 LoadBalancer 服務」文件中的「節點分組」一節。GKE Gateway 和 Ingress 控制器會使用
GCE_VM_IP_PORTNEG,將流量直接轉送至 Pod (容器原生負載平衡)。GCE_VM_IP_PORTNEG 中的每個端點都包含 Pod 的 IP 位址和容器通訊埠 (targetPort)。GKE 建立這些 NEG 的方式取決於您使用的閘道或 Ingress 資源:內部和外部閘道:GKE 會自動為每個參照的 Service 建立
GCE_VM_IP_PORTNEG。請參閱「關於 Gateway API」。內部 Ingress:GKE 會自動為每個參照的 Service 建立
GCE_VM_IP_PORTNEG。請參閱「設定內部應用程式負載平衡器的 Ingress」。外部 ingress:GKE 會為每個包含
cloud.google.com/neg: '{"ingress": true}'註解的參照 Service 建立GCE_VM_IP_PORTNEG。請參閱「設定外部應用程式負載平衡器的 Ingress」。
您可以指示 GKE 建立獨立
GCE_VM_IP_PORTNEG 並維護其 Pod 端點,以便將這些 NEG 做為後端,附加至您自行管理的應用程式負載平衡器和 Proxy 網路負載平衡器。詳情請參閱「透過獨立可用區 NEG 使用容器原生負載平衡功能」。
限制
- 可用區 NEG 無法與舊版網路搭配使用。
GCE_VM_IP可用區 NEG 不支援default-port屬性。
配額
- 如要瞭解 NEG 配額 (例如每項專案的 NEG 數量、每項後端服務的 NEG 數量,以及每個 NEG 的端點數量),請參閱負載平衡配額頁面。
後續步驟
- 如要瞭解如何設定可用區 NEG,請參閱「設定可用區網路端點群組」。
- 如要瞭解如何在 Google Kubernetes Engine 中使用可用區 NEG,請參閱「透過 Ingress 進行容器原生負載平衡」。