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

本文介紹設定 Google Cloud 外部 Proxy 網路負載平衡器時,必須瞭解的概念。

外部 Proxy 網路負載平衡器是反向 Proxy 負載平衡器,可將來自網際網路的 TCP 流量分配至Google Cloud 虛擬私有雲 (VPC) 網路中的虛擬機器 (VM) 執行個體。使用外部 Proxy 網路負載平衡器時,傳入的 TCP 或 SSL流量會在負載平衡器終止。接著,新連線會使用 TCP 或 SSL (建議),將流量轉送至最近的可用後端 。如要瞭解更多用途,請參閱「Proxy 網路負載平衡器總覽」。

外部 Proxy 網路負載平衡器可讓您為全球所有使用者使用單一 IP 位址。負載平衡器會自動將流量轉送至距離使用者最近的後端。

在這個範例中,來自 A 市和 B 市使用者的 SSL 流量會在負載平衡層終止,並與所選後端建立獨立連線。

Cloud Load Balancing 搭配 SSL 終止。
具備 SSL 終止功能的 Cloud Load Balancing (按一下即可放大)。

運作模式

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

  • 傳統版 Proxy 網路負載平衡器是在全球分散的 Google Front End (GFE) 上實作。您可以設定這個負載平衡器,分別使用目標 TCP Proxy 或目標 SSL Proxy,處理 TCP 或 SSL 流量。在進階級中,這個負載平衡器可設為全域負載平衡服務。在標準級中,這項負載平衡器會設為區域性負載平衡服務。傳統 Proxy 網路負載平衡器也可用於其他使用 SSL 的通訊協定,例如 WebSockets 和 IMAP over SSL。
  • 全域外部 Proxy 網路負載平衡器是在全球分散式 GFE 上實作,並支援進階流量管理功能。您可以設定這個負載平衡器,分別使用目標 TCP Proxy 或目標 SSL Proxy,處理 TCP 或 SSL 流量。這個負載平衡器設定為進階級的全域負載平衡服務。全域外部 Proxy 網路負載平衡器也可用於其他使用 SSL 的通訊協定,例如 WebSockets 和 IMAP over SSL。
  • 區域性外部 Proxy 網路負載平衡器是以開放原始碼 Envoy Proxy 軟體堆疊實作。只能處理 TCP 流量。這個負載平衡器設為區域性負載平衡服務,可使用進階級或標準級。

找出眾數

如要判斷負載平衡器的模式,請完成下列步驟。

控制台

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

    前往「Load balancing」(負載平衡)

  2. 「Load Balancers」(負載平衡器) 分頁會顯示負載平衡器類型、通訊協定和區域。如果區域為空白,則負載平衡器為全域。

    下表摘要說明如何識別負載平衡器的模式。

    負載平衡器模式 負載平衡器類型 存取權類型 區域
    傳統版 Proxy 網路負載平衡器 網路 (Proxy 傳統版) 外部
    全域外部 Proxy 網路負載平衡器 網路 (Proxy) 外部
    區域性外部 Proxy 網路負載平衡器 網路 (Proxy) 外部 指定區域

gcloud

  1. 使用 gcloud compute forwarding-rules describe 指令:

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
    
  2. 在指令輸出內容中,檢查負載平衡配置、區域和網路級別。下表摘要說明如何識別負載平衡器的模式。

    負載平衡器模式 負載平衡架構 轉送規則 網路級別
    傳統版 Proxy 網路負載平衡器 EXTERNAL 全球 標準或進階
    全域外部 Proxy 網路負載平衡器 EXTERNAL_MANAGED 全球 Premium
    區域性外部 Proxy 網路負載平衡器 EXTERNAL_MANAGED 區域 標準或進階

架構

下圖顯示外部 Proxy 網路負載平衡器的元件。

全球

這張圖表顯示全域外部 Proxy 網路負載平衡器部署作業的元件。這個架構適用於進階級的全域外部 Proxy 網路負載平衡器和傳統 Proxy 網路負載平衡器。

全域外部 Proxy 網路負載平衡器元件。
全域外部 Proxy 網路負載平衡器元件 (按一下即可放大)。

地區性

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

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

以下是外部 Proxy 網路負載平衡器的元件。

Proxy 專用子網路

Proxy 專用子網路提供一組 IP 位址,Google 會使用這些位址,代表您執行 Envoy Proxy。在您使用負載平衡器的虛擬私有雲網路中,每個區域都必須建立一個僅限 Proxy 子網路。這個 Proxy 專用子網路的 --purpose 旗標設為 REGIONAL_MANAGED_PROXY。在相同區域和虛擬私有雲網路中,所有區域 Envoy 型負載平衡器都會共用來自同一個僅限 Proxy 子網路的 Envoy Proxy 集區。

區域和虛擬私有雲網路中所有負載平衡器的後端 VM 或端點,都會接收來自僅限 Proxy 子網路的連線。

注意事項:

  • 僅限 Proxy 的子網路「只」用於 Envoy Proxy,而非後端。
  • 負載平衡器的 IP 位址「不」位於僅限 Proxy 子網路中。負載平衡器的 IP 位址是由其外部代管轉送規則定義。
  • 僅限 Proxy 子網路必須設為 IPV4_IPV6 堆疊類型,才能終止傳入的 IPv6 流量,並設為 IPV4_ONLY 或 IPV4_IPV6 堆疊類型,才能終止傳入的 IPv4 流量。

轉送規則和 IP 位址

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

IP 位址規格。每項轉送規則都會參照單一 IP 位址,您可以在應用程式的 DNS 記錄中使用該位址。您可以預留要使用的靜態 IP 位址,或讓 Cloud Load Balancing 為您指派。建議您預留靜態 IP 位址。否則,每當您刪除轉送規則並建立新規則時,都必須使用新指派的臨時 IP 位址更新 DNS 記錄。

通訊埠規格。這個負載平衡器定義中使用的外部轉送規則,只能參照 1 至 65535 之間的「一個」通訊埠。如要支援多個連續通訊埠,則須設定多項轉送規則。您可以設定多個轉送規則,使用相同的虛擬 IP 位址和不同的通訊埠;因此,您可以使用不同的自訂通訊埠,將多個應用程式 Proxy 傳送至相同的 TCP Proxy 虛擬 IP 位址。詳情請參閱「轉送規則的通訊埠規格」。

如要支援多個連續通訊埠,您必須設定多項轉送規則。您可以設定多項轉送規則,使用相同的虛擬 IP 位址和不同的通訊埠。因此,您可以將多個應用程式 (具有不同的自訂通訊埠) 透過 Proxy 傳送至同一個 TCP Proxy 虛擬 IP 位址。

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

負載平衡器模式 網路服務級別 轉送規則、IP 位址和負載平衡架構 從網際網路轉送至負載平衡器前端
傳統版 Proxy 網路負載平衡器 進階級

全域外部轉送規則

全域外部 IP 位址

負載平衡架構:EXTERNAL

要求會轉送至網際網路上最靠近用戶端的 GFE。
標準級

區域性外部轉送規則

區域性外部 IP 位址

負載平衡架構:EXTERNAL

要求會轉送至負載平衡器區域中的 GFE。
全域外部 Proxy 網路負載平衡器 進階級

全域外部轉送規則

全域外部 IP 位址

負載平衡架構:EXTERNAL_MANAGED

要求會轉送至網際網路上最靠近用戶端的 GFE。
區域性外部 Proxy 網路負載平衡器 進階級 和標準級

區域性外部轉送規則

區域性外部 IP 位址

負載平衡架構:EXTERNAL_MANAGED

要求會轉送至與負載平衡器位於相同區域的 Envoy Proxy。

轉送規則和虛擬私有雲網路

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

負載平衡器模式 虛擬私有雲網路關聯
全域外部 Proxy 網路負載平衡器

傳統版 Proxy 網路負載平衡器

沒有相關聯的虛擬私有雲網路。

轉送規則一律使用虛擬私有雲網路以外的 IP 位址。因此,轉送規則沒有相關聯的虛擬私有雲網路。

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

轉送規則的虛擬私有雲網路是已建立僅限 Proxy 子網路的網路。建立轉送規則時,您必須指定網路。

視您使用的是 IPv4 位址或 IPv6 位址範圍而定,一律會有與轉送規則相關聯的明確或隱含虛擬私有雲網路。

  • 區域性外部 IPv4 位址一律位於虛擬私有雲網路之外。不過,建立轉送規則時,您必須指定已建立僅限 Proxy 子網路的虛擬私有雲網路。因此,轉送規則具有明確的網路關聯。
  • 區域性外部 IPv6 位址範圍一律位於虛擬私有雲網路中。建立轉送規則時,您必須指定要從哪個子網路擷取 IP 位址範圍。這個子網路必須位於已建立 Proxy 專用子網路的區域和虛擬私有雲網路。因此,這代表網路之間存在關聯。

    網路和子網路需求。如要處理 IPv6 流量,網路和子網路必須符合下列設定規定:

    • 虛擬私有雲網路:您必須使用設有 --enable-ula-internal-ipv6 旗標的自訂模式虛擬私有雲網路。
    • 轉送規則子網路:這個子網路必須是雙重堆疊 (IPv4_IPv6) 或 IPV6_ONLY 子網路,且 ipv6-access-type 設為 EXTERNAL。
    IPv6 位址分配選項。轉送規則必須參照子網路 /64 外部 IPv6 位址範圍中的 /96 IPv6 位址範圍。您可以使用下列任一方法指派這個 /96 IPv6 位址範圍:
    • 指定預留的外部 IPv6 位址。
    • 指定自訂臨時 IPv6 位址。
    • 讓 Google Cloud 自動指派臨時 IPv6 位址。
    限制。如要指定自訂臨時 IPv6 位址,請使用 Google Cloud CLI 或 API。 Google Cloud 控制台不支援為轉送規則指定自訂臨時 IPv6 位址。

目標 Proxy

外部 Proxy 網路負載平衡器會終止用戶端連線,並建立連至後端的新連線。目標 Proxy 會將這些新連線轉送至後端服務。

視應用程式需要處理的流量類型而定,您可以設定外部 Proxy 網路負載平衡器,並搭配目標 TCP Proxy 或目標 SSL Proxy。

  • 目標 TCP Proxy:如果您預期會有 TCP 流量,請為負載平衡器設定目標 TCP Proxy。
  • 目標 SSL Proxy:如果您預期會收到加密用戶端流量,請為負載平衡器設定目標 SSL Proxy。這類負載平衡器僅適用於非 HTTP(S) 流量。如果是 HTTP(S) 流量,建議使用外部應用程式負載平衡器。

根據預設,目標 Proxy 不會保留原始用戶端 IP 位址和通訊埠資訊。如要保留這項資訊,請在目標 Proxy 上啟用 PROXY 通訊協定。

下表列出外部 Proxy 網路負載平衡器的目標 Proxy 需求。

負載平衡器模式 網路服務級別 目標 Proxy 參考資料
傳統版 Proxy 網路負載平衡器 進階級 targetTcpProxies或targetSslProxies 目標 Proxy 參照單一後端服務。
標準級 targetTcpProxies或targetSslProxies
全域外部 Proxy 網路負載平衡器 進階級 targetTcpProxies或targetSslProxies 目標 Proxy 參照單一後端服務。
區域性外部 Proxy 網路負載平衡器 進階級和標準級 regionTargetTcpProxies 目標 Proxy 會參照單一後端服務,或一或多個 TLS 路由。

SSL 憑證

只有在部署全域外部 Proxy 網路負載平衡器和傳統 Proxy 網路負載平衡器,且目標為 SSL Proxy 時,才需要 SSL 憑證。

使用目標 SSL Proxy 的外部 Proxy 網路負載平衡器,需要私密金鑰和 SSL 憑證,才能設定負載平衡器。

  • Google Cloud 提供兩種設定方法,可將私密金鑰和 SSL 憑證指派給目標 SSL Proxy:Compute Engine SSL 憑證和 Certificate Manager。如需各項設定的說明,請參閱 SSL 憑證總覽中的「憑證設定方法」。

  • Google Cloud 提供兩種憑證類型:自行管理和 Google 代管。如需各類型的說明,請參閱 SSL 憑證總覽中的「憑證類型」。

TLS 路由

TLS 路由資源可讓您定義如何根據 SNI 主機名稱將流量轉送至後端服務。

如果 TLS 路由未參照負載平衡器的目標 TCP Proxy,則只會使用單一預設後端服務,且用戶端傳送的 SNI 主機名稱值或缺少該值並不相關。

TLS 路由僅適用於區域性外部 Proxy 網路負載平衡器。傳統版 Proxy 網路負載平衡器和全域外部 Proxy 網路負載平衡器不支援這類政策。

您可以使用 gcloud network-services tls-routes 指令,將 TLS 路由設定附加至負載平衡器的目標 Proxy。

下表列出外部 Proxy 網路負載平衡器所需的 TLS Routes API:

負載平衡器模式 TLS 路由 參考資料
區域性外部 Proxy 網路負載平衡器 區域性tlsRoutes 每項 TLS 路由可參照一或多項後端服務。

後端服務

後端服務會將傳入流量導向一或多個連接的後端。每個後端都由執行個體群組或網路端點群組,以及後端服務容量的相關資訊組成。後端服務能力可依據 CPU 或每秒要求數 (RPS) 設定。

每個負載平衡器至少有一個後端服務資源。如果您使用 TLS 路由 (預先發布版) 設定路由,可以為負載平衡器設定多項後端服務。如果沒有 TLS 路由,每個負載平衡器只能有一個後端服務。

後端服務會指定要對可用後端執行的健康狀態檢查。

對後端服務所做的變更不會立即生效。變更可能需要幾分鐘才會套用至 GFE。為了確保使用者遭遇的中斷情形能降至最低,您可以啟用後端服務的連線排除功能。如果後端終止、手動移除或由自動配置器移除,就可能發生這類中斷情形。如要進一步瞭解如何使用連線排除功能,盡可能減少服務中斷情形,請參閱「啟用連線排除功能」。

如要進一步瞭解後端服務資源,請參閱「後端服務總覽」。

下表列出外部 Proxy 網路負載平衡器後端服務支援的不同後端。

負載平衡器模式 後端服務支援的後端
執行個體群組 區域性 NEG 網際網路 NEG 無伺服器 NEG 混合型 NEG Private Service Connect NEG GKE
傳統版 Proxy 網路負載平衡器 使用獨立可用區 NEG
全域外部 Proxy 網路負載平衡器 * GCE_VM_IP_PORT 類型端點 *
區域性外部 Proxy 網路負載平衡器 GCE_VM_IP_PORT 類型端點 僅限區域性 NEG 新增 Private Service Connect NEG

* 全域外部 Proxy 網路負載平衡器支援 IPv4 和 IPv6 (雙重堆疊) 執行個體群組,以及具有 GCE_VM_IP_PORT 端點的可用區 NEG 後端。

後端和虛擬私有雲網路

如果是全域外部 Proxy 網路負載平衡器和傳統版 Proxy 網路負載平衡器後端,執行個體群組後端的所有後端執行個體,以及 NEG 後端的所有後端端點,都必須位於同一個專案。不過,執行個體群組後端或 NEG 可以使用該專案中的其他虛擬私有雲網路。不同的虛擬私有雲網路不需要使用虛擬私有雲網路對等互連連線,因為 GFE 會直接與各自虛擬私有雲網路中的後端通訊。

區域性外部 Proxy 網路負載平衡器後端適用下列規定:

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

    後端網路定義

    • 如果是可用區 NEG 和混合型 NEG,您必須在建立 NEG 時明確指定虛擬私有雲網路。
    • 如果是代管執行個體群組,虛擬私有雲網路則是在執行個體範本中定義。
    • 對於非代管執行個體群組,系統會將執行個體群組的虛擬私有雲網路,設為與新增至執行個體群組的第一個 VM 的 nic0 介面虛擬私有雲網路相符。

    後端網路需求

    後端網路必須符合下列其中一項網路需求:

    • 後端的虛擬私有雲網路必須與轉送規則的虛擬私有雲網路完全相符。

    • 後端的虛擬私有雲網路必須透過虛擬私有雲網路對接,連線至轉送規則的虛擬私有雲網路。您必須設定子網路路由交換,允許轉送規則虛擬私有雲網路中的 Proxy 專用子網路,與後端執行個體或端點使用的子網路之間進行通訊。

    後端 IPv6 子網路需求

    前端連線使用的 IP 版本與後端連線無關。由於僅限 Proxy 子網路為雙重堆疊 (IPV4_IPV6),因此僅限 Proxy 子網路可以使用 IPv4 或 IPv6 與後端通訊。

    如果後端執行個體處理 IPv6 流量,後端子網路可以設定為 IPV4_ONLY 或 IPV4_IPV6 (雙重堆疊) 堆疊類型。如果後端子網路的堆疊類型包含 IPv6,則必須明確將子網路的 ipv6-access-type 設為 EXTERNAL。

  • 後端的虛擬私有雲網路和轉送規則的虛擬私有雲網路,都必須是附加至同一個 NCC 中樞的虛擬私有雲輪輻。匯入和匯出篩選器必須允許轉送規則虛擬私有雲網路中的僅限 Proxy 子網路,與後端執行個體或端點使用的子網路之間進行通訊。
  • 如果是其他後端類型,所有後端都必須位於同一個虛擬私有雲網路和區域。

後端和網路介面

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

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

與後端通訊的通訊協定

為外部 Proxy 網路負載平衡器設定後端服務時,您必須設定後端服務與後端通訊時使用的通訊協定。

  • 如果是傳統 Proxy 網路負載平衡器,您可以選擇 TCP 或 SSL。
  • 如果是全域外部 Proxy 網路負載平衡器,您可以選擇 TCP 或 SSL。
  • 如果是區域性外部 Proxy 網路負載平衡器,則可使用 TCP。

負載平衡器只會使用您指定的通訊協定,不會嘗試與其他通訊協定協商連線。

防火牆規則

必須設定下列防火牆規則:

  • 如果是傳統版 Proxy 網路負載平衡器,則須設定輸入 allow 防火牆規則,允許流量從 GFE 傳送至後端。

  • 如果是全域外部 Proxy 網路負載平衡器,則須設定輸入 allow 防火牆規則,允許流量從 GFE 傳送至後端。

  • 如果是區域性外部 Proxy 網路負載平衡器,則須設定輸入防火牆規則,允許流量從僅限 Proxy 的子網路傳送至後端。

  • 輸入 allow 防火牆規則,允許健康狀態檢查探測範圍的流量傳送至後端。如要進一步瞭解健康狀態檢查探測,以及為何必須允許來自這些探測的流量,請參閱「探測 IP 範圍和防火牆規則」。

防火牆規則是在 VM 執行個體層級實作,而非 GFE Proxy 層級。您無法使用防火牆規則,阻止流量傳送至負載平衡器。

這些防火牆規則的通訊埠必須設定如下:

  • 允許流量傳送至各項後端服務健康狀態檢查的目的地通訊埠。
  • 如果是執行個體群組後端:請根據後端服務的已命名通訊埠,與各執行個體群組上與該已命名通訊埠相關聯的通訊埠編號之間的對應關係,決定要設定的通訊埠。指派給相同後端服務的執行個體群組,其通訊埠編號可能不同。
  • 如果是GCE_VM_IP_PORT NEG可用區 NEG 後端:允許流量傳送至端點的通訊埠編號。

下表匯總防火牆規則所需的來源 IP 位址範圍。

負載平衡器模式 健康狀態檢查來源範圍 要求來源範圍
全域外部 Proxy 網路負載平衡器
  • 35.191.0.0/16
  • 130.211.0.0/22

傳送至後端的 IPv6 流量:

  • 2600:2d00:1:b029::/64
GFE 流量的來源取決於後端類型:
  • 執行個體群組和可用區 NEG (GCE_VM_IP_PORT):
    • 130.211.0.0/22
    • 35.191.0.0/16

    傳送至後端的 IPv6 流量:

    • 2600:2d00:1:1::/64
傳統版 Proxy 網路負載平衡器
  • 35.191.0.0/16
  • 130.211.0.0/22
這些範圍適用於健康狀態檢查探測和來自 GFE 的要求。
區域性外部 Proxy 網路負載平衡器*, †
  • 35.191.0.0/16
  • 130.211.0.0/22

傳送至後端的 IPv6 流量:

  • 2600:2d00:1:b029::/64
這些範圍適用於健康狀態檢查探測。

* 混合型 NEG 不必允許來自 Google 健康狀態檢查探測範圍的流量。不過,如果您在單一後端服務中同時使用混合式和可用區 NEG,則必須允許來自 Google 健康狀態檢查探測範圍的流量,才能使用可用區 NEG。

† 區域性網際網路 NEG 的健康狀態檢查為選用。使用「區域性」網際網路 NEG 的負載平衡器流量,會從「僅限 Proxy 子網路」產生,然後透過 Cloud NAT 轉譯為手動或自動分配的 NAT IP 位址。這類流量包括健康狀態檢查探測,以及從負載平衡器傳送至後端的使用者要求。詳情請參閱「區域 NEG:使用 Cloud NAT 閘道」。

來源 IP 位址

後端看到的封包來源 IP 位址「不是」負載平衡器的Google Cloud 外部 IP 位址。也就是說,會有兩個 TCP 連線。

傳統版 Proxy 網路負載平衡器和全域外部 Proxy 網路負載平衡器:
  • 連線 1,從原始用戶端連至負載平衡器 (GFE):

    • 來源 IP 位址:原始用戶端 (如果用戶端位於網路位址轉譯 (NAT) 閘道或轉送 Proxy 後方,則為外部 IP 位址)。
    • 目的地 IP 位址:負載平衡器的 IP 位址。
  • 連線 2,從負載平衡器 (GFE) 到後端 VM 或端點:

    • 來源 IP 位址:防火牆規則中指定範圍內的 IP 位址。

    • 目的地 IP 位址:虛擬私有雲網路中後端 VM 或容器的內部 IP 位址。

區域性外部 Proxy 網路負載平衡器:
  • 連線 1,從原始用戶端到負載平衡器 (僅限 Proxy 的子網路):

    • 來源 IP 位址:原始用戶端 (如果用戶端位於網路位址轉譯 (NAT) 閘道或轉送 Proxy 後方,則為外部 IP 位址)。
    • 目的地 IP 位址:負載平衡器的 IP 位址。
  • 連線 2,從負載平衡器 (僅限 Proxy 子網路) 到後端 VM 或端點:

    • 來源 IP 位址:僅限 Proxy 子網路中的 IP 位址,由部署在與負載平衡器相同區域和網路中的所有 Envoy 型負載平衡器共用。

    • 目的地 IP 位址:虛擬私有雲網路中後端 VM 或容器的內部 IP 位址。

開放的通訊埠

外部 Proxy 網路負載平衡器是反向 Proxy 負載平衡器。這類的負載平衡器會終止連入的連線,然後從負載平衡器開啟連至後端的新連線。這些負載平衡器是使用全球各地的 Google Front End (GFE) Proxy 導入。

GFE 有多個開放通訊埠,可支援在相同架構上執行的其他 Google 服務。執行通訊埠掃描時,您可能會看到其他在 GFE 上執行的 Google 服務開啟的通訊埠。

從稽核角度來看,對 GFE 負載平衡器的 IP 位址執行通訊埠掃描並無用處,原因如下:

  • 執行 TCP SYN 探測時,通訊埠掃描 (例如使用 nmap) 通常不會預期收到回應封包或 TCP RST 封包。GFE 只會針對您設定轉送規則的通訊埠,傳送 SYN-ACK 封包來回應 SYN 探測。GFE 只會將封包傳送至後端,以回應傳送至負載平衡器 IP 位址「和」轉送規則設定的目的地通訊埠的封包。傳送至其他 IP 位址或通訊埠的封包不會傳送至後端。

  • 傳送至負載平衡器 IP 位址的封包可由 Google 叢集中的任何 GFE 回覆;不過,掃描負載平衡器 IP 位址和目的地通訊埠組合,只會查詢每個 TCP 連線的單一 GFE。負載平衡器的 IP 位址不會指派給單一裝置或系統。因此,掃描 GFE 型負載平衡器的 IP 位址,並不會掃描 Google 機群中的所有 GFE。

有鑑於此,以下提供一些更有效的方法,可稽核後端執行個體的安全性:

  • 資安稽核人員應檢查負載平衡器的轉送規則設定。轉送規則會定義目的地通訊埠,負載平衡器會接受該通訊埠的封包,並將封包轉送至後端。如果是以 GFE 為基礎的負載平衡器,每項外部轉送規則只能參照單一目的地 TCP 通訊埠。

  • 安全稽核員應檢查適用於後端 VM 的防火牆規則設定。您設定的防火牆規則會封鎖從 GFE 傳送至後端 VM 的流量,但不會封鎖傳入 GFE 的流量。如需最佳做法,請參閱防火牆規則一節。

Shared VPC 架構

區域性外部 Proxy 網路負載平衡器 和傳統版 Proxy 網路負載平衡器 支援使用 Shared VPC 網路的部署作業。Shared VPC 可讓您明確區隔網路管理員和服務開發人員的職責。開發團隊可以專注於在服務專案中建構服務,而網路基礎架構團隊則可以佈建及管理負載平衡。如果您不熟悉 Shared VPC,請參閱總覽說明文件。

IP 位址 轉送規則 目標 Proxy 後端元件
外部 IP 位址必須與負載平衡器定義在同一個專案中。 外部轉送規則必須與後端執行個體 (服務專案) 定義在同一個專案中。 目標 TCP或 SSL Proxy 必須與後端執行個體定義在同一個專案中。

如果是傳統版 Proxy 網路負載平衡器,則必須在後端執行個體所在的專案中,定義全域後端服務。這些執行個體必須位於附加至後端服務的執行個體群組中,做為後端使用。與後端服務相關聯的健康狀態檢查,必須在後端服務所在的專案中定義。

如果是區域性外部 Proxy 網路負載平衡器,後端 VM 通常位於服務專案中。您必須在該服務專案中定義區域性後端服務和健康狀態檢查。

流量分配

將後端執行個體群組或 NEG 新增至後端服務時,您必須指定負載平衡模式,定義測量後端負載和目標容量的方法。

如果是外部 Proxy 網路負載平衡器,平衡模式可以是 CONNECTION 或 UTILIZATION:

  • 如果負載平衡模式為 CONNECTION,系統會根據後端可處理的連線總數分配負載。
  • 如果負載平衡模式為 UTILIZATION,系統會根據執行個體群組中執行個體的使用率分配負載。這個平衡模式僅適用於 VM 執行個體群組後端。

流量在後端之間的分配方式,取決於負載平衡器的平衡模式。

傳統版 Proxy 網路負載平衡器

如果是傳統版 Proxy 網路負載平衡器,平衡模式會用於選取最有利的後端 (執行個體群組或 NEG)。接著,流量會以輪流方式分配給後端中的執行個體或端點。

連線分配方式

傳統版 Proxy 網路負載平衡器可設為進階級的全域負載平衡服務,以及標準級的區域性服務。

平衡模式和目標選擇會從每個區域性 GCE_VM_IP_PORT NEG、區域性執行個體群組或區域性執行個體群組的可用區角度,決定後端飽和度。接著,系統會使用一致性雜湊,在可用區內分配流量。

進階級

  • 您只能有一個後端服務,而後端服務可以在多個區域設有後端。如要進行全域負載平衡,請在多個區域部署後端,負載平衡器會自動將流量導向最靠近使用者的區域。如果某個區域的容量已滿,負載平衡器會自動將新連線導向其他有可用容量的區域。現有的使用者連線仍會保留在目前區域。

  • Google 會從全球所有連接點 advertise 負載平衡器的 IP 位址。每個負載平衡器 IP 位址都是全域任意傳播。

  • 如果您設定的後端服務在多個區域中都有後端,Google Front End (GFE) 會嘗試將要求導向至最靠近使用者的區域中,健康狀態良好的後端執行個體群組或 NEG。

標準版

  • Google 會從與轉送規則區域相關聯的連接點,advertise 負載平衡器的 IP 位址。負載平衡器使用區域性外部 IP 位址。

  • 您只能在轉送規則所在的區域設定後端。負載平衡器只會將要求導向該區域中健康狀態良好的後端。

全域外部 Proxy 網路負載平衡器

如果是全域外部 Proxy 網路負載平衡器,流量分配會依據負載平衡模式和負載平衡地區政策。

平衡模式會決定要傳送至各群組 (執行個體群組或 NEG) 的流量權重和比例。負載平衡位置政策 (LocalityLbPolicy) 會決定群組內後端的負載平衡方式。

後端服務收到流量時,會先根據後端的平衡模式,將流量導向後端 (執行個體群組或 NEG)。選取後端後,系統會根據負載平衡位置政策,將流量分配給該後端群組中的執行個體或端點。

如要瞭解詳情,請參考下列資源:

連線分配方式

全域外部 Proxy 網路負載平衡器可設為進階級的全域負載平衡服務。

平衡模式和目標選擇會從每個可用區 GCE_VM_IP_PORT NEG 或可用區執行個體群組的角度,決定後端飽和度。接著,系統會使用一致性雜湊,在可用區內分配流量。

  • 您只能有一個後端服務,且該後端服務可以在多個區域設有後端。如要進行全域負載平衡,請在多個區域部署後端,負載平衡器會自動將流量導向最靠近使用者的區域。如果某個區域的容量已滿,負載平衡器會自動將新連線導向其他有可用容量的區域。現有使用者連線仍會保留在目前區域。

  • Google 會從全球所有連接點 advertise 負載平衡器的 IP 位址。每個負載平衡器 IP 位址都是全域任意傳播。

  • 如果您設定的後端服務在多個區域中都有後端,Google Front End (GFE) 會嘗試將要求導向至最靠近使用者的區域中,健康狀態良好的後端執行個體群組或 NEG。

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

如果是區域性外部 Proxy 網路負載平衡器,流量分配會依據負載平衡模式和負載平衡位置政策。

平衡模式會決定應傳送至各個後端 (執行個體群組或 NEG) 的流量權重和比例。負載平衡位置政策 (LocalityLbPolicy) 會決定群組內後端的負載平衡方式。

後端服務收到流量時,會先根據平衡模式將流量導向後端 (執行個體群組或 NEG)。選取後端後,系統會根據負載平衡位置政策,將流量分配給該後端群組中的執行個體或端點。

如要瞭解詳情,請參考下列資源:

使用 TLS 路由進行 SNI 轉送

TCP Proxy 網路負載平衡器可根據 TLS 握手期間提供的伺服器名稱指示 (SNI) 主機名稱,透過 SNI 轉送功能將流量轉送至特定後端服務。SNI 是 TLS 擴充功能,可讓用戶端在建立加密通道前,指定要連線的網域名稱。SNI 主機名稱會以未加密的格式在 ClientHello 訊息中傳輸,以便負載平衡器檢查這個值,並將流量轉送至適當的後端服務。

您可以使用 TLS 路由設定資源,將特定 SNI 主機名稱對應至後端服務。設定 SNI 路由後,負載平衡器會啟用 TLS 直通,將加密的位元組串流直接傳遞至後端,不經負載平衡器解密。

這項功能可實現一些重要用途,例如:

  • 使用單一全域任意傳播 IP 位址和通訊埠,即可提供多個應用程式,減少 IPv4 位址消耗。
  • 支援端對端加密部署作業,憑證可保留在後端,確保流量在傳輸過程中不會解密。
  • 平台管理員可以管理核心基礎架構,服務擁有者則能獨立管理特定路徑和後端。
  • 根據用戶端提供的 SNI,將流量轉送至有狀態非 HTTP 應用程式 (例如 MongoDB) 的特定 shard。

使用 TLS 路由時的流量分配方式

設定 SNI 轉送後,流量會轉送至後端服務,如下所示:

  1. 負載平衡器會監聽轉送規則中定義的 IP 和通訊埠。
  2. 用戶端啟動 TLS 連線時,負載平衡器會攔截 ClientHello 訊息,並擷取 SNI 主機名稱。
  3. 系統會將擷取的 SNI 與設定的 TLS 路由中定義的主機名稱進行比較。負載平衡器會使用下列邏輯,判斷應由哪項後端服務接收流量:

    1. 如果用戶端未使用 TLS 通訊協定,負載平衡器會關閉連線。
    2. 如果用戶端未在 ClientHello 訊息中傳送任何 SNI 主機名稱,負載平衡器就會關閉連線。
    3. 如果用戶端傳送的 SNI 主機名稱不是有效的 DNS 名稱,負載平衡器會關閉連線。
    4. 如果用戶端傳送的 SNI 主機名稱與 TLS 路由相關聯的任何 SNI 主機名稱都不相符,負載平衡器就會關閉連線。
    5. 在所有其他情況下:負載平衡器會使用下列比對程序選取後端服務:

      比對時會採用最長的尾碼 (以子網域數量而言最長)。為說明比對方法,假設有三個 TLS 路由,SNI 分別為 *.foo.com、*.bar.foo.com 和 baz.bar.foo.com。

      • 如果用戶端的 SNI 主機名稱為 baz.bar.foo.com,負載平衡器會選取 SNI 為 baz.bar.foo.com 的 TLS 路由所參照的後端服務。
      • 如果用戶端的 SNI 主機名稱為 qux.bar.foo.com,負載平衡器會選取 SNI 為 *.bar.foo.com 的 TLS 路由所參照的後端服務。
      • 如果用戶端的 SNI 主機名稱為 qux.qux.foo.com,負載平衡器會選取 SNI 為 *.foo.com 的 TLS 路由所參照的後端服務。

    找到相符項目後,加密的位元組串流會直接透過 Proxy 傳送至指派的後端服務,而不會終止 TLS 連線 (適用於 TLS 傳遞)。

限制

使用 TLS 路由設定 SNI 路由時,須遵守下列限制:

  • 目標 TCP Proxy 可以參照單一後端服務,或一或多個 TLS 路由。無法同時設定兩者。
  • Proxy 網路負載平衡器無法偵測 HTTP 連線合併,可能導致 HTTP 要求轉送錯誤。

    根據預設,瀏覽器會合併 HTTP 連線。舉例來說,當瀏覽器開啟與 www.example.com 的連線,且伺服器在 TLS 握手期間提供 *.example.com 的憑證時,只要主機名稱解析為相同的 IP 位址,瀏覽器就會針對所有傳送至 *.example.com 的要求重複使用這個連線。這符合 RFC 7540 的規定。

    使用 SNI 轉送時,連線建立後,就會永久繫結至目的地後端。假設部署作業中,*.example.com 是由具有 *.example.com TLS 憑證的一個 HTTPS 後端提供,而 my.example.com 是由另一個 HTTPS 後端提供。如果先建立與 *.example.com 的連線,則後續對 my.example.com 的 HTTP 要求會使用 *.example.com HTTPS 後端,合併到同一個連線。

工作階段相依性

您可以透過工作階段相依性,設定負載平衡器的後端服務,將來自同一用戶端的所有要求傳送至同一後端,前提是後端健康狀態良好且有容量。

外部 Proxy 網路負載平衡器提供下列工作階段相依性類型:
  • 無

    工作階段相依性設定為 NONE「不」代表沒有工作階段相依性。這表示未明確設定任何工作階段相依性選項。

    系統一律會執行雜湊處理來選取後端。如果工作階段相依性設定為 NONE,負載平衡器會使用 5 元組雜湊選取後端。5 元組雜湊包含來源 IP 位址、來源通訊埠、通訊協定、目的地 IP 位址和目的地通訊埠。

    NONE 的工作階段相依性為預設值。

  • 用戶端 IP 相依性

    用戶端 IP 工作階段相依性 (CLIENT_IP) 是根據封包的來源和目的地 IP 位址建立的 2 元組雜湊。用戶端 IP 相依性會將來自相同用戶端 IP 位址的所有要求轉送至同一個後端,前提是該後端有足夠容量且健康狀態良好。

    使用用戶端 IP 相依性時,請注意下列事項:

    • 只有在封包直接傳送至負載平衡器時,封包目的地 IP 位址才會與負載平衡器轉送規則的 IP 位址相同。
    • 如果封包在傳送至 Google Cloud 負載平衡器之前,先由中介 NAT 或 Proxy 系統處理,則封包來源 IP 位址可能與原始用戶端相關聯的 IP 位址不符。如果許多用戶端共用同一個有效來源 IP 位址,某些後端 VM 可能會收到比其他 VM 更多的連線或要求。

設定工作階段相依性時,請注意下列事項:

  • 請勿依賴工作階段相依性進行驗證或安全防護。只要提供服務且健康的後端數量有所變更,工作階段相依性就可能中斷。詳情請參閱「失去工作階段相依性」。

  • --session-affinity 和 --subsetting-policy 旗標的預設值都是 NONE,且一次只能將其中一個設為其他值。

失去工作階段相依性

所有工作階段相依性選項都必須符合下列條件:

  • 所選後端執行個體或端點必須維持後端設定。發生下列任一事件時,工作階段相依性可能會中斷:
    • 從執行個體群組中移除所選執行個體。
    • 代管執行個體群組自動調度資源或自動修復功能,會從代管執行個體群組中移除所選執行個體。
    • 從 NEG 移除所選端點。
    • 從後端服務中移除含有指定執行個體或端點的執行個體群組或 NEG。
  • 所選後端執行個體或端點必須保持健康狀態。如果所選執行個體或端點未通過健康狀態檢查,工作階段相依性可能會中斷。
  • 如果是全域外部 Proxy 網路負載平衡器和傳統版 Proxy 網路負載平衡器,在變更轉送路徑後,如果後續要求或連線使用不同的第一層 Google Front End (GFE),工作階段相依性可能會中斷。如果網際網路用戶端與 Google 之間的轉送路徑在要求或連線之間變更,系統可能會選取不同的第一層 GFE。
所有工作階段相依性選項都必須符合下列額外規定:
  • 包含所選執行個體或端點的執行個體群組或 NEG,不得達到目標容量定義的上限。(如果是區域性代管執行個體群組,包含所選執行個體的執行個體群組可用區元件不得為滿載)。如果執行個體群組或 NEG 已滿,但其他執行個體群組或 NEG 尚未滿,工作階段相依性可能會中斷。使用 UTILIZATION 平衡模式時,飽和度可能會以無法預測的方式變化,因此建議您使用 RATE 或 CONNECTION 平衡模式,盡可能減少工作階段相依性中斷的情況。

  • 已設定的後端執行個體或端點總數必須保持不變。發生下列至少一項事件時,設定的後端執行個體或端點數量會變更,工作階段相依性可能會中斷:

    • 新增執行個體或端點:

      • 您將執行個體新增至後端服務的現有執行個體群組。
      • 代管執行個體群組自動調度資源功能,會將執行個體新增至後端服務的代管執行個體群組。
      • 您可以在後端服務中,將端點新增至現有的 NEG。
      • 將非空白的執行個體群組或 NEG 新增至後端服務。
    • 移除任何執行個體或端點,不只是所選執行個體或端點:

      • 從執行個體群組後端移除任何執行個體。
      • 代管執行個體群組自動調度資源或自動修復功能,會從代管執行個體群組後端移除任何執行個體。
      • 從 NEG 後端移除任何端點。
      • 從後端服務中移除任何現有、非空的後端執行個體群組或 NEG。
  • 健康狀態良好的後端執行個體或端點總數必須保持不變。發生下列至少一項事件時,健康狀態良好的後端執行個體或端點數量會變更,工作階段相依性可能會中斷:

    • 任何執行個體或端點通過健康狀態檢查,從健康狀態不良轉為良好。
    • 任何執行個體或端點未通過健康狀態檢查,從健康狀態良好轉為不良或逾時。

容錯移轉

外部 Proxy 網路負載平衡器的容錯移轉機制運作方式如下:

  • 如果後端健康狀態不良,系統會自動將流量重新導向至同一區域內健康狀態良好的後端。
  • 如果某個區域內的所有後端都健康狀態不佳,流量就會分配到其他區域中健康狀態良好的後端 (僅限全域和傳統模式)。
  • 如果所有後端都處於不良狀態,負載平衡器就會捨棄流量。

GKE 應用程式的負載平衡

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

如需相關說明文件,請參閱「透過獨立可用區 NEG 使用容器原生負載平衡功能」。

限制

  • 您無法使用Google Cloud 控制台 ,在進階級建立區域性外部 Proxy 網路負載平衡器。此外,在Google Cloud 控制台 中,只有支援標準級的區域可使用這些負載平衡器。請改用 gcloud CLI 或 API。

  • 使用外部 Proxy 網路負載平衡器時,Google Cloud 不保證 TCP 連線的生命週期。用戶端應能彈性因應連線中斷的情況,無論是因廣泛的網際網路問題,還是因定期重新啟動管理連線的 Proxy。如果 Proxy 重新啟動,Proxy 網路負載平衡器記錄中的 proxyStatus status 欄位會顯示相關狀態訊息。

  • 下列限制僅適用於使用 SSL 目標 Proxy 部署的傳統版 Proxy 網路負載平衡器,以及全域外部 Proxy 網路負載平衡器:

    • 傳統版 Proxy 網路負載平衡器和全域外部 Proxy 網路負載平衡器不支援用戶端憑證式驗證,也稱為 mTLS 驗證。

    • 傳統版 Proxy 網路負載平衡器和全域外部 Proxy 網路負載平衡器,僅支援憑證的一般名稱 (CN) 屬性或主體別名 (SAN) 屬性中,網域使用小寫字元。只有在目標 Proxy 中設為主要憑證時,系統才會傳回網域中含有大寫字元的憑證。

後續步驟