內部 Proxy 網路負載平衡器簡介

Google Cloud 內部 Proxy 網路負載平衡器是一種以 Proxy 為基礎的負載平衡器,由 開放原始碼 Envoy Proxy 軟體Andromeda 網路虛擬化堆疊提供支援。

內部 Proxy 網路負載平衡器是第 4 層負載平衡器,可讓您透過區域內部 IP 位址執行及擴充 TCP 服務流量,這個 IP 位址只能由同一個虛擬私有雲網路中的用戶端或已連線至您虛擬私有雲網路的用戶端存取。負載平衡器會先在 Envoy 代理程式中終止用戶端與負載平衡器之間的 TCP 連線。代理程式會開啟第二個 TCP 連線,連線至託管在 Google Cloud、地端或其他雲端環境的後端。如需瞭解更多用途,請參閱「Proxy 網路負載平衡器總覽」。

運作模式

您可以透過下列模式設定內部 Proxy 網路負載平衡器:

  • 區域性內部 Proxy 網路負載平衡器。這是以開放原始碼 Envoy Proxy 為基礎,以代管服務形式實作的區域負載平衡器。在區域模式下,所有用戶端和後端都來自指定的區域,這有助於您遵守區域規定。

  • 跨區域內部 Proxy 網路負載平衡器。這是一種多區域負載平衡器,以開放原始碼 Envoy Proxy 為基礎,實作為代管服務。跨區域模式可讓您將流量平均分配到遍布全球的後端服務,這些服務在多個地區都有後端,其中包括確保將流量導向最近後端的流量管理功能。這個負載平衡器也支援高可用性。將後端放置在多個區域,有助於避免單一區域發生故障。如果某個地區的後端服務發生故障,流量可能會移轉至其他地區。負載平衡器的轉送規則 IP 位址在所有區域中一律可供存取。

    下表說明區域模式和跨區域模式之間的重要差異:

    功能 區域性內部 Proxy 網路負載平衡器 跨區域內部 Proxy 網路負載平衡器
    負載平衡器的虛擬 IP 位址 (VIP)。 從特定 Google Cloud 區域的子網路中分配。 從特定 Google Cloud 區域的子網路中分配。

    來自多個區域的 VIP 位址可共用相同的全域後端服務。

    用戶端存取權 根據預設,無法在全球存取。
    您可以選擇 啟用全域存取權。
    可供全球存取。來自任何 Google Cloud 區域的用戶端都可以將流量傳送至負載平衡器。
    已平衡負載的後端 區域後端。
    負載平衡器只能將流量傳送至與負載平衡器 Proxy 位於同一區域的後端。
    全球後端。
    負載平衡器可將流量傳送至任何區域的後端。
    高可用性和容錯移轉 自動將用戶端連線至相同區域內的健康後端。 自動將容錯移轉至相同或不同區域中運作正常的後端。

識別模式

主控台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「負載平衡」

  2. 在「負載平衡器」分頁中,您可以查看負載平衡器類型、通訊協定和地區。如果地區為空白,表示負載平衡器處於跨區域模式。下表概要說明如何識別負載平衡器的模式。

    負載平衡器模式 負載平衡器類型 存取權類型 區域
    區域性內部 Proxy 網路負載平衡器 網路 (Proxy) 內部 指定區域
    跨區域內部 Proxy 網路負載平衡器 網路 (Proxy) 內部

gcloud

如要判斷負載平衡器的模式,請執行下列指令:

gcloud compute forwarding-rules describe FORWARDING_RULE_NAME

在指令輸出中,檢查負載平衡配置、區域和網路層級。下表概述如何識別負載平衡器的模式。

負載平衡器模式 負載平衡架構 轉送規則
區域性內部 Proxy 網路負載平衡器 INTERNAL_MANAGED 區域
跨區域內部 Proxy 網路負載平衡器 INTERNAL_MANAGED 全球

架構

下圖顯示內部 Proxy 網路負載平衡器所需的 Google Cloud 資源。

地區性

這張圖表顯示進階級區域內部 Proxy 網路負載平衡器部署作業的元件。

區域性內部 Proxy 網路負載平衡器元件。
區域性內部 Proxy 網路負載平衡器元件 (按一下可放大)。

跨地區

這張圖表顯示在同一個 VPC 網路內,進階級網路中的跨區域內部 Proxy 網路負載平衡器部署作業元件。每個全域轉送規則都會使用用戶端用來連線的地區 IP 位址。

跨區域內部 Proxy 網路負載平衡器元件。
跨區域內部 Proxy 網路負載平衡器元件 (按一下可放大)。

Proxy 專用子網路

在上圖中,僅限 Proxy 子網路提供一組 IP 位址,Google 會使用這些 IP 位址代表您執行 Envoy Proxy。您必須在使用 Envoy 型內部 Proxy 網路負載平衡器的虛擬私有雲網路的每個地區,建立一個僅限 Proxy 的子網路。

下表說明內部 Proxy 網路負載平衡器的 Proxy 專用子網路規定:

負載平衡器模式 僅限 Proxy 子網路 --purpose 標記的值
區域性內部 Proxy 網路負載平衡器

REGIONAL_MANAGED_PROXY

區域和跨區域負載平衡器無法共用相同的子網路

區域和虛擬私有雲網路中的所有區域 Envoy 型負載平衡器,都會共用同一個僅限 Proxy 的子網路。

跨區域內部 Proxy 網路負載平衡器

GLOBAL_MANAGED_PROXY

區域和跨區域負載平衡器無法共用相同的子網路

跨區域 Envoy 型負載平衡器必須在設定負載平衡器的每個區域中,具備僅限 Proxy 的子網路。同一個區域和網路中的跨區域負載平衡器 Proxy 會共用相同的 Proxy 專用子網路。

進一步說明:

  • 僅限 Proxy 的子網路用於 Envoy Proxy,而非後端。
  • 區域和虛擬私有雲網路中,所有內部 Proxy Network Load Balancer 的後端虛擬機器 (VM) 執行個體或端點,都會接收來自 Proxy 專用子網路的連線。
  • 內部 Proxy 網路負載平衡器的 IP 位址「不會」位於僅限 Proxy 的子網路中。負載平衡器的 IP 位址是由內部代管轉送規則定義。

轉送規則和 IP 位址

轉送規則會依 IP 位址、通訊埠和通訊協定,將流量轉送至由目標 Proxy 和後端服務所組成的負載平衡設定。

IP 位址規格。每個轉送規則都會參照單一區域 IP 位址,供您用於應用程式的 DNS 記錄。您可以保留要使用的靜態 IP 位址,或由 Cloud Load Balancing 為您指派靜態 IP 位址。建議您保留靜態 IP 位址,否則每當您刪除轉送規則並建立新規則時,均必須使用新指派的臨時 IP 位址更新 DNS 記錄。

用戶端會使用 IP 位址和通訊埠連線至負載平衡器的 Envoy Proxy,轉送規則的 IP 位址是負載平衡器的 IP 位址 (有時稱為虛擬 IP 位址或 VIP)。連線至負載平衡器的用戶端必須使用 TCP。如需支援的通訊協定完整清單,請參閱「負載均衡器功能比較」。

與轉送規則相關聯的內部 IP 位址,可以來自與後端相同網路和區域的子網路。

通訊埠規格。您在內部 Proxy 網路負載平衡器中使用的每個轉送規則,都可以參照 1 到 65535 之間的單一通訊埠。如要支援多個通訊埠,您必須設定多個轉送規則。

下表列出內部 Proxy 網路負載平衡器的轉送規則規定:

負載平衡器模式 轉送規則、IP 位址和 Proxy 專用子網路 --purpose 從用戶端轉送至負載平衡器前端
區域性內部 Proxy 網路負載平衡器

區域 forwardingRules

區域 IP 位址

負載平衡架構:

INTERNAL_MANAGED

僅限 Proxy 的子網路 --purpose

REGIONAL_MANAGED_PROXY

IP 位址 --purpose

SHARED_LOADBALANCER_VIP

您可以啟用全域存取權,讓任何區域的用戶端都能存取負載平衡器。 後端也必須與負載平衡器位於相同區域。

跨區域內部 Proxy 網路負載平衡器

全球 globalForwardingRules

區域性 IP 位址

負載平衡架構:

INTERNAL_MANAGED

僅限 Proxy 的子網路 --purpose

GLOBAL_MANAGED_PROXY

IP 位址 --purpose

SHARED_LOADBALANCER_VIP

根據預設,系統會啟用全域存取權,讓任何區域的用戶端都能存取負載平衡器。後端可位於多個區域。


轉送規則和 VPC 網路

本節說明外部應用程式負載平衡器使用的轉送規則如何與 VPC 網路建立關聯。

負載平衡器模式 虛擬私有雲網路關聯
跨區域內部 Proxy 網路負載平衡器

區域性內部 Proxy 網路負載平衡器

區域性內部 IPv4 位址一律位於虛擬私有雲網路內。建立轉送規則時,您必須指定從哪個子網路取得內部 IP 位址。這個子網路必須與 Proxy 專用子網路位於相同的區域和虛擬私有雲網路。已建立。因此,這裡有隱含的網路關聯。

目標 Proxy

內部 Proxy 網路負載平衡器會終止來自用戶端的 TCP 連線,並建立與後端的新連線。根據預設,系統不會保留原本的用戶端 IP 位址和通訊埠資訊。您可以使用 Proxy 通訊協定來保留這些資訊。目標 Proxy 會將傳入要求直接轉送至負載平衡器的後端服務。

下表列出內部 Proxy 網路負載平衡器所需的目標 Proxy API:

負載平衡器模式 目標 Proxy
區域性內部 Proxy 網路負載平衡器 區域 regionTargetTcpProxies
跨區域內部 Proxy 網路負載平衡器 全球 targetTcpProxies

後端服務

後端服務會將傳入流量導向至一或多個連接的後端。後端是執行個體群組或網路端點群組。後端包含平衡模式資訊,可根據連線 (或僅針對執行個體群組後端的使用率) 定義滿載程度。

每個內部 Proxy 網路負載平衡器都有一個後端服務資源。

下表列出內部 Proxy 網路負載平衡器的後端服務規定:

負載平衡器模式 後端服務類型
區域性內部 Proxy 網路負載平衡器 區域 regionBackendServices
跨區域內部 Proxy 網路負載平衡器 全球 backendServices

支援的後端

後端服務支援下列類型的後端:

負載平衡器模式 後端服務支援的後端
執行個體群組 區域性 NEG 網際網路 NEG 無伺服器網路端點群組 (NEG) 混合式 NEG Private Service Connect NEG GKE
區域性內部 Proxy 網路負載平衡器
GCE_VM_IP_PORT 類型端點
僅限區域性 NEG 新增 Private Service Connect NEG
跨區域內部 Proxy 網路負載平衡器
GCE_VM_IP_PORT 類型端點
新增 Private Service Connect NEG

所有後端都必須是相同類型 (執行個體群組或 NEG)。您可以同時使用不同類型的執行個體群組後端,也可以同時使用不同類型的 NEG 後端,但無法在同一個後端服務中同時使用執行個體群組和 NEG 後端。

您可以在同一個後端服務中混合使用區域 NEG 和混合 NEG。

為了盡量減少使用者遭遇的服務中斷情形,請啟用後端服務的連線排除功能。當後端終止、遭手動移除或由自動配置器移除時,均有可能發生這類中斷情形。如要進一步瞭解如何使用連線排除功能,將服務中斷情形降至最低,請參閱「啟用連線排除功能」。

後端和虛擬私有雲網路

  • 對於執行個體群組、區域 NEG 和混合連線 NEG 而言,所有後端都必須位於與後端服務相同的專案和區域。不過,負載平衡器可以參照後端服務,後端服務使用的是相同專案中不同的 VPC 網路。 負載平衡器的虛擬私有雲網路與後端虛擬私有雲網路之間的連線,可以使用虛擬私有雲網路對等互連、Cloud VPN 通道、Cloud Interconnect VLAN 連結或 Network Connectivity Center 架構來設定。

    後端網路定義

    • 對於區域性 NEG 和混合式 NEG,您必須在建立 NEG 時明確指定虛擬私人雲端網路。
    • 對於代管執行個體群組,VPC 網路是在執行個體範本中定義。
    • 對於非代管執行個體群組,執行個體群組的虛擬私有雲網路會設為與 nic0 介面的虛擬私有雲網路相符,適用於新增至執行個體群組的第一個 VM。

    後端網路需求

    後端網路必須符合下列任一網路需求:

    • 後端的 VPC 網路必須與轉送規則的 VPC 網路完全一致。

    • 後端的 VPC 網路必須透過虛擬私有雲網路對等互連連線至轉送規則的 VPC 網路。您必須設定子網路路徑交換,才能在轉送規則的虛擬私有雲網路中,允許僅限 Proxy 的子網路與後端執行個體或端點使用的子網路之間的通訊。

  • 後端的 VPC 網路和轉送規則的 VPC 網路都必須是VPC 輻條,且連結至相同的 Network Connectivity Center 中樞。匯入和匯出篩選器必須允許轉送規則 VPC 網路中代理專用子網路,與後端執行個體或端點使用的子網路之間的通訊。
  • 對於所有其他後端類型,所有後端都必須位於同一個虛擬私有雲網路和區域。

後端和網路介面

如果您使用執行個體群組後端,封包一律會傳送至 nic0。如果您想將封包傳送至非 nic0 介面 (vNIC 或動態網路介面),請改用 NEG 後端。

如果您使用區域 NEG 後端,封包會傳送至 NEG 中端點代表的任何網路介面。NEG 端點必須與 NEG 明確定義的 VPC 網路位於同一個 VPC 網路。

與後端通訊的通訊協定

為內部 Proxy 網路負載平衡器設定後端服務時,請設定後端服務用來與後端通訊的通訊協定。負載平衡器只會使用您指定的通訊協定,不會嘗試與其他通訊協定交涉建立連線。內部 Proxy 網路負載平衡器僅支援 TCP,用於與後端通訊。

健康狀態檢查

每個後端服務都會指定健康狀態檢查,定期監控後端是否已準備好接收來自負載平衡器的連線。這麼做可降低要求傳送至無法處理要求的後端的風險。健康狀態檢查不會檢查應用程式是否正常運作。

健康狀態檢查通訊協定

雖然這不是必要條件,也不一定可行,但最佳做法是使用通訊協定與後端服務的通訊協定相符的健康狀態檢查。舉例來說,TCP 健康狀態檢查可最準確地測試 TCP 與後端的連線情形。如需支援的健康狀態檢查通訊協定清單,請參閱負載平衡器功能比較頁面的「健康狀態檢查」一節。

下表列出內部 Proxy 網路負載平衡器在各模式下支援的健康狀態檢查範圍:

負載平衡器模式 健康狀態檢查類型
區域性內部 Proxy 網路負載平衡器 區域 regionHealthChecks
跨區域內部 Proxy 網路負載平衡器 全球 healthChecks

如要進一步瞭解健康狀態檢查,請參閱下列資源:

防火牆規則

內部 Proxy 網路負載平衡器需要下列防火牆規則:

  • 輸入允許規則,允許來自 Google 健康狀態檢查探針的流量。如要進一步瞭解特定健康狀態檢查探測器 IP 位址範圍,以及為何需要允許來自這些範圍的流量,請參閱「探測器 IP 範圍和防火牆規則」。
  • 允許輸入的規則,允許來自僅限 Proxy 的子網路的流量。

這些防火牆規則的通訊埠必須依下列方式設定:

  • 允許流量傳送至每個後端服務健康狀態檢查的目的端通訊埠。

  • 針對執行個體群組後端:透過後端服務的已命名通訊埠與各個執行個體群組中與該已命名通訊埠相關聯的通訊埠編號之間的對應關係,判斷要設定的通訊埠。在指派給相同後端服務的執行個體群組中,連接埠號碼可能會有所不同。

  • 如果是 GCE_VM_IP_PORT NEG 後端,請允許流量傳送至端點的通訊埠編號。

這些負載均衡器的防火牆規則規定有特定例外狀況:

  • 混合型 NEG 不需要允許來自 Google 健康狀態檢查探測範圍的流量。不過,如果您在單一後端服務中同時使用混合式和區域性 NEG,則必須允許區域性 NEG 從 Google 健康狀態檢查探針範圍接收流量。
  • 對於區域性網際網路 NEG,健康狀態檢查為選用項目。使用區域網際網路 NEG 的負載平衡器流量會從僅限 Proxy 的子網路產生,然後透過 NAT 轉譯 (使用 Cloud NAT) 轉譯為手動或自動分配的 NAT IP 位址。這類流量包括負載平衡器傳送至後端的健康狀態檢查探測和使用者要求。詳情請參閱「區域性 NEG:使用 Cloud NAT 閘道」一文。

用戶端存取權

用戶端可以位於相同的網路,也可以位於透過 虛擬私有雲網路對等互連連線的虛擬私有雲網路。

對於區域性內部 Proxy 網路負載平衡器,根據預設,用戶端必須與負載平衡器位於相同的地區。您可以啟用全域存取權,讓任何區域的用戶端都能存取負載平衡器。

對於跨區域內部 Proxy 網路負載平衡器,系統預設會啟用全域存取權。來自任何區域的用戶端都能存取負載平衡器。

下表列出區域性內部 Proxy 網路負載平衡器的用戶端存取權:

全域存取權已停用 已啟用全域存取權
用戶端必須與負載平衡器位於相同的地區。且必須與負載平衡器位於相同的 VPC 網路,或位於透過 VPC 網路對等互連連線至負載平衡器的 VPC 網路。 用戶端可位於任何區域。但仍必須與負載平衡器位於相同的 VPC 網路,或是透過 VPC 網路對等互連功能連線至負載平衡器的 VPC 網路。
內部部署用戶端可以透過 Cloud VPN 通道或 VLAN 連結存取負載平衡器。這些隧道或附件必須與負載平衡器位於相同的地區。 內部部署用戶端可透過 Cloud VPN 通道或 VLAN 連結存取負載平衡器。這些通道或附件可位於任何區域。

共用 VPC 架構

內部 Proxy 網路負載平衡器支援使用共用虛擬私有雲的網路。共用虛擬私有雲可讓您在網路管理員和服務開發人員之間明確區隔職責。開發團隊可專注於服務專案中的服務建構作業,而網路基礎架構團隊則可佈建及管理負載平衡。如果您不熟悉共用虛擬私人雲端,請參閱共用虛擬私人雲端總覽說明文件

IP 位址 轉送規則 目標 Proxy 後端元件

內部 IP 位址必須在後端所屬的專案中定義。

如要讓負載平衡器在共用虛擬私有雲網路中運作,內部 IP 位址必須在後端 VM 所在的服務專案中定義,必須參照主機專案中所需共用虛擬私有雲網路中的子網路。該位址本身來自參照子網路的主要 IP 範圍。

內部轉送規則必須在後端所在專案中定義。

如要讓負載平衡器在共用虛擬私有雲端網路中運作,內部轉送規則必須在後端 VM 所在的服務專案中定義,必須參照與相關聯內部 IP 位址相同的子網路 (在共用虛擬私有雲端網路中)。

目標 Proxy 必須在後端所在的專案中定義。 在共用虛擬私有雲情境中,後端虛擬機器通常會位於服務專案中。您必須在該服務專案中定義地區內部後端服務和健康狀態檢查。

流量分配

內部 Proxy 網路負載平衡器會將流量分配給後端,如下所示:

  1. 只要該區域內有可用且有容量的健康狀態後端 (執行個體群組或 NEG),來自單一用戶端的連線就會傳送至相同區域,這由平衡模式決定。對於區域性內部 Proxy 網路負載平衡器,平衡模式可以是 CONNECTION (執行個體群組或 NEG 後端) 或 UTILIZATION (僅限執行個體群組後端)。
  2. 如果您已設定工作階段相依性,來自用戶端的連線就會傳送至同一個後端。
  3. 選取後端後,系統會根據負載平衡政策,將流量分配給執行個體 (在執行個體群組中) 或端點 (在 NEG 中)。如要瞭解支援的負載平衡政策演算法,請參閱 區域後端服務 API 說明文件中的 localityLbPolicy 設定。

工作階段相依性

工作階段相依性可讓您設定負載平衡器的後端服務,將同一個用戶端的所有要求傳送至同一個後端,前提是後端必須處於良好健康狀態並具有容量。

內部 Proxy 網路負載平衡器提供用戶端 IP 相依性,可將來自相同用戶端 IP 位址的所有要求轉送至同一個後端,前提是該後端具有容量且保持健康狀態。

容錯移轉

如果後端出現問題,系統會自動將流量重新導向至健康的後端。

下表說明內部 Proxy 網路負載平衡器的容錯移轉行為:

負載平衡器模式 容錯移轉行為 所有後端的運作狀態皆不良時的行為
區域性內部 Proxy 網路負載平衡器

負載平衡器會為每個區域實作溫和的容錯移轉演算法。當任何區域中健康與不健康後端的比例低於特定百分比門檻 (70%;無法設定此門檻),負載平衡器就會開始將流量重新導向至其他區域,而非等待區域中的所有後端都變成不健康。如果所有可用區中的所有後端都處於不健康狀態,負載平衡器會立即終止用戶端連線。

Envoy Proxy 會根據所設定的 流量分配,將流量傳送至區域中健康狀態良好的後端。

終止連線
跨區域內部 Proxy 網路負載平衡器

自動容錯移轉至相同區域或其他區域中的健康後端。

系統會根據設定的 流量分配,將流量分配至跨多個區域的健康後端。

終止連線

GKE 應用程式的負載平衡

如果您在 Google Kubernetes Engine (GKE) 中建構應用程式,可以使用獨立區域 NEG 將流量直接負載平衡至容器。使用獨立 NEG 時,您必須建立用於建立區域 NEG 的 Service 物件,然後將 NEG 與後端服務建立關聯,以便負載平衡器連線至 Pod。

相關的 GKE 說明文件:

配額與限制

如要進一步瞭解配額和限制,請參閱「配額與限制」。

限制

  • 內部 Proxy 網路負載平衡器不支援 IPv6 流量。
  • 內部 Proxy 網路負載平衡器不支援共用虛擬私有雲部署作業,因為負載平衡器的前端位於一個主機或服務專案中,而後端服務和後端則位於另一個服務專案中 (也稱為跨專案服務參照)。

後續步驟