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

本文將介紹設定 Trusted Cloud 外部 Proxy 網路負載平衡器時需瞭解的概念。

外部 Proxy 網路負載平衡器是一種反向 Proxy 負載平衡器,可將來自網際網路的 TCP 流量分配至Trusted Cloud 虛擬私有雲 (VPC) 網路中的虛擬機器 (VM) 執行個體。使用外部 Proxy 網路負載平衡器時,負載平衡器會終止傳入的 TCP流量。然後,新連線會使用 TCP 或 SSL (建議),將流量轉送至最近的可用後端。

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

您可以在區域模式中使用這項負載平衡器,這項負載平衡器在後文中稱為區域性外部 Proxy 網路負載平衡器。負載平衡器是以開放原始碼 Envoy 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 位址是由外部代管轉送規則定義。

轉送規則和 IP 位址

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

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

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

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

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

負載平衡器模式 網路服務級別 轉送規則、IP 位址和負載平衡架構 從網際網路轉送至負載平衡器前端
區域性外部 Proxy 網路負載平衡器 Premium 級

區域外部轉送規則

區域外部 IP 位址

負載平衡架構:EXTERNAL_MANAGED

要求會轉送至與負載平衡器位於相同地區的 Envoy 代理伺服器。

轉送規則和 VPC 網路

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

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

轉送規則的虛擬私有雲網路,是指已建立僅限 Proxy 的子網路所在的網路。您可以在建立轉寄規則時指定網路。

目標 Proxy

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

根據預設,目標 Proxy 不會保留原始用戶端 IP 位址和通訊埠資訊。您可以在目標 Proxy 上啟用 PROXY 通訊協定,藉此保留這些資訊。

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

負載平衡器模式 網路服務級別 目標 Proxy
區域性外部 Proxy 網路負載平衡器 進階級和標準級 regionTargetTcpProxies

後端服務

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

每個負載平衡器都有一個後端服務資源,可指定要對可用後端執行的健康狀態檢查

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

如需後端服務資源的詳細資訊,請參閱後端服務總覽

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

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

後端和虛擬私有雲網路

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

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

    後端網路定義

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

    後端網路需求

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

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

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

  • 對於所有其他後端類型,所有後端都必須位於同一個虛擬私有雲網路和區域。

後端和網路介面

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

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

與後端通訊的通訊協定

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

防火牆規則

您必須使用下列防火牆規則:

  • 區域性外部 Proxy 網路負載平衡器的輸入防火牆規則,可允許來自僅限 Proxy 的子網路的流量傳送至後端。

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

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

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

  • 允許流量傳送至每個後端服務健康狀態檢查的目的端通訊埠。
  • 針對執行個體群組後端:透過後端服務的命名通訊埠與各個執行個體群組中與該命名通訊埠相關聯的通訊埠編號之間的對應關係,判斷要設定的通訊埠。指派給相同後端服務的執行個體群組,可能會有不同的通訊埠編號。
  • 如果是 GCE_VM_IP_PORT NEG 區域 NEG 後端:允許流量傳送至端點的通訊埠編號。

來源 IP 位址

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

區域性外部 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 位址或通訊埠的封包不會傳送至後端。

    GFE 會實作 Google Cloud Armor 等安全防護功能。透過 Google Cloud Armor Standard,GFEs 可全天候防範巨流量和通訊協定型 DDoS 攻擊,以及 SYN 洪水。即使您未明確設定 Google Cloud Armor,也能使用這項防護機制。只有在您設定安全性政策或註冊 Managed Protection Plus 時,才會向您收費。

  • 傳送至負載平衡器 IP 位址的封包,可由 Google 車隊中的任何 GFE 回應;不過,掃描負載平衡器 IP 位址和目的地連接埠組合,只會針對每個 TCP 連線查詢單一 GFE。負載平衡器的 IP 位址不會指派給單一裝置或系統。因此,掃描以 GFE 為基礎的負載平衡器 IP 位址,並不會掃描 Google 機群中的所有 GFE。

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

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

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

共用 VPC 架構

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

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

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

流量分配

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

對於外部 Proxy 網路負載平衡器,平衡模式可以是 CONNECTIONUTILIZATION

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

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

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

對於區域性外部 Proxy 網路負載平衡器,流量分配會根據負載平衡模式和負載平衡地區政策。

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

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

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

工作階段相依性

如果後端的健康狀態良好並具有容量,則工作階段相依性會將來自相同用戶端的所有要求傳送至同一個後端。

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

  • NONE。未為負載平衡器設定工作階段相依性。
  • 用戶端 IP 相依性:將來自相同用戶端 IP 位址的所有要求轉送至同一個後端。

容錯移轉

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

  • 如果後端的健康狀態不佳,系統會自動將流量重新導向至同一區域內的健康後端。
  • 如果所有後端的運作狀態都不良,負載平衡器會捨棄流量。

GKE 應用程式的負載平衡

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

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

限制

  • 您無法使用Trusted Cloud 主控台在進階級別中建立地區性外部 Proxy 網路負載平衡器。 請改用 gcloud CLI 或 API。

  • Trusted Cloud 不會對使用外部 Proxy 網路負載平衡器的 TCP 連線生命週期做出任何保證。用戶端應能因應連線中斷問題,包括因更廣泛的網際網路問題,以及因管理連線的 Proxy 定期重新啟動而導致的連線中斷問題。

後續步驟