網路端點群組 (NEG) 是一項設定物件,可用來指定一組後端端點或服務。區域 NEG 為區域資源,代表單一子網路中 Google Cloud 資源的 IP 位址或 IP 位址與通訊埠組合集合。
NEG 之所以實用,還有另一個原因:您可以只建立代表「軟體服務」的 IP 位址和通訊埠的邏輯群組,而不必建立整個 VM 的邏輯群組。其他自動化調度管理服務 (如 Apache Mesos 或 Cloud Foundry) 代管微服務 (在 VM 中執行) 的 IP 位址,也可以做為端點。 Google Cloud
如要進一步瞭解其他 NEG 類型,請參閱:
區域性 NEG 分為兩種類型,取決於組成 NEG 的網路端點類型。兩種區域 NEG 支援不同的用途和負載平衡器類型。
- 含有
GCE_VM_IP_PORT
端點的可用區 NEG:可做為下列負載平衡器的後端: - 含有
GCE_VM_IP
端點的可用區 NEG:可做為下列負載平衡器的後端:
含有 GCE_VM_IP
端點的 NEG
直通式網路負載平衡器支援具有 GCE_VM_IP
端點的可用區 NEG。這些可用區 NEG 包含一或多個端點,這些端點會使用 Compute Engine VM 網路介面的主要內部 IPv4 位址表示。
雖然 Google Cloud 會使用 IP 位址代表端點,但 GCE_VM_IP
端點的用途是識別網路介面本身。網路介面必須位於 NEG 的子網路中。
由於 GCE_VM_IP
端點會識別網路介面,因此您無法指定具有 GCE_VM_IP
端點的通訊埠。
這類端點只能在內部直通式網路負載平衡器和外部直通式網路負載平衡器的後端服務中做為後端使用。
含有 GCE_VM_IP_PORT
端點的 NEG
這些區域 NEG 包含下列一或多個 IP 位址或 IP 位址和目的地通訊埠組合:
- 虛擬機器網路介面的主要內部 IPv4 位址
- VM 網路介面的主要內部 IPv4 位址,加上目的地連接埠號碼
- 從別名 IP 位址範圍指派給 VM 網路介面的內部 IPv4 位址
- 從指派給 VM 網路介面的別名 IP 位址範圍中取得的內部 IPv4 位址,加上目的地連接埠號碼
包含 GCE_VM_IP_PORT
端點的網路介面必須位於 NEG 的子網路中。如果您從 GCE_VM_IP_PORT
端點省略通訊埠編號,Google Cloud 會使用 NEG 的端點預設通訊埠編號。
因為這些區域 NEG 後端可讓您指定 IP 位址和通訊埠,您可以精細地將流量發布到在 VM 執行個體「內部」執行的應用程式或容器,也就是容器原生負載平衡。GKE 會使用 GCE_VM_IP_PORT
端點執行以下操作:
您可以建立使用區域性 NEG 的自行管理負載平衡器,其 GCE_VM_IP_PORT
端點由 GKE 管理。詳情請參閱「透過獨立的區域 NEG 使用容器原生負載平衡功能」。
應用程式負載平衡器和 Proxy 網路負載平衡器支援使用 GCE_VM_IP_PORT
端點的可用區 NEG。
端點規格
建立 NEG 時,您需要選取區域、網路和子網路。每個端點 IP 位址都必須與區域 NEG 位於同一個子網路。
如果您選取的網路為自動模式虛擬私人雲端網路,就不必指定子網路。然而,子網路仍會與區域 NEG 建立關聯。在建立區域 NEG 時,如果指定了自動模式虛擬私有雲網路,卻沒有指定子網路,其使用的子網路,就是在您選取的區域 NEG 所在地區內自動建立的子網路。
建立 NEG (GCE_VM_IP
或 GCE_VM_IP_PORT
) 時,您會指定所建立區域 NEG 的類型,這會決定 NEG 支援的端點類型。
GCE_VM_IP_PORT
區域性 NEG
GCE_VM_IP_PORT
區域性 NEG 必須符合下列條件:
您必須為每個 VM 端點指定名稱。
每個端點 VM 都必須位於與 NEG 相同的區域。
NEG 中的每個端點都必須是不重複的 IP 位址與通訊埠組合。不重複的端點 IP 位址和通訊埠組合可供多個 NEG 參照。
每個端點 VM 都必須在與 NEG 相同的虛擬私有雲網路中,具備網路介面。端點 IP 位址必須與 NEG 中指定的子網路相關聯。
每個 NEG 最多支援每個 NEG 的端點數上限。端點可分散至多個獨立的 VM,或全部位於單一 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 執行個體的主要內部 IP 位址,且該 IP 位址必須與 NEG 的子網路相符。只要多個網路介面 VM 執行個體的任何網路介面的主要內部 IP 位址與 NEG 子網路相符,即可新增至 NEG。每個 NEG 最多支援每個 NEG 的端點數上限。端點必須分散至所有獨立的 VM。單一 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 做為後端服務的後端。
如要瞭解 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 進行容器原生負載平衡」。
如要使用 NEG 進行容器原生負載平衡,Ingress 是建議的方式,因為它具有許多可簡化 NEG 管理作業的功能。或者,您也可以手動建立 Proxy 負載平衡器,但仍讓 GKE 管理 NEG 端點成員資格,如下一點 (獨立 NEG) 所述。
如要瞭解如何透過 Ingress 設定負載平衡器,請參閱「透過 Ingress 使用容器原生負載平衡功能」。
獨立的 NEG
獨立 NEG 可讓 GKE 叢集以
GCE_VM_IP_PORT
端點 (代表 Pod IP 位址和容器通訊埠) 建立區域 NEG,同時讓您靈活地在 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 使用容器原生負載平衡」。