網際網路端點群組總覽

Cloud Load Balancing 支援將流量 Proxy 至外部後端 Google Cloud。如要為負載平衡器定義外部後端,請使用名為網際網路網路端點群組 (NEG) 的資源。

如要從外部後端提供內容,但希望 Google Cloud 負載平衡器做為前端,即可使用這類部署作業。這可讓您執行下列操作:

  • 使用 Google Edge 基礎架構終止使用者連線。
  • 將連線導向外部後端。
  • 透過 Google 私人骨幹將流量傳送至公開端點,提升可靠性並縮短用戶端與伺服器之間的延遲時間。
  • 使用全域負載平衡器時,您可以透過 Cloud CDN 快取外部後端的內容。

圖 1 顯示外部應用程式負載平衡器,其中包含多種後端類型,其中一種是透過網際網路 NEG 設定的外部後端。

負載平衡中的網際網路網路端點群組。
圖 1. 負載平衡中的網際網路網路端點群組 (按一下可放大)。

各種全域和區域負載平衡器都支援網際網路 NEG 後端。視負載平衡器 (全域或區域) 而定,網際網路 NEG 在 DNS、健康狀態檢查、可用端點數量和流量轉送行為方面的支援程度有所不同。

以下各節說明如何搭配 Cloud Load Balancing 使用外部後端。如要搭配 Cloud Service Mesh 使用外部後端,請參閱「搭配網際網路網路端點群組使用 Cloud Service Mesh」。

術語

下列字詞有時會互通使用,因為意義相同或相似:

  • 外部後端:位於 Google Cloud 外部,可透過網際網路連線的後端。網際網路 NEG 中的端點。
  • 自訂來源:外部後端相同。在 CDN 中,「來源」是業界標準用語,指的是提供網路內容的後端執行個體。
  • 網際網路網路端點群組 (NEG):用於指定外部後端的 Google Cloud API 資源。
  • 外部端點:外部後端相同。

除非是指網際網路 NEG API 資源,否則本文件一律使用「外部後端」一詞。

負載平衡器元件

本節說明負載平衡架構,以及設定具有外部後端的負載平衡器時所需的資源。負載平衡器只需要針對後端服務進行特別設定。前端設定與其他負載平衡器相同。

下圖顯示設定具備外部後端的負載平衡器時所需的 Google Cloud 資源。

全域外部

這張圖顯示設定全域外部應用程式負載平衡器 (含外部後端) 時所需的 Google Cloud 資源。

全域外部應用程式負載平衡器,搭配外部後端。
全域外部應用程式負載平衡器,搭配外部後端 (按一下可放大)。

區域型外部

這張圖顯示設定區域性外部應用程式負載平衡器 (含外部後端) 時所需的 Google Cloud 資源。

具有外部後端的區域性外部應用程式負載平衡器。
具有外部後端的區域性外部應用程式負載平衡器 (按一下即可放大)。

區域型內部

下圖顯示設定區域性內部應用程式負載平衡器 (含外部後端) 時所需的資源。 Google Cloud

具有外部後端的區域性內部應用程式負載平衡器。
具有外部後端的區域性內部應用程式負載平衡器 (按一下即可放大)。

下圖顯示設定區域性內部 Proxy 網路負載平衡器 (含外部後端) 時所需的 Google Cloud 資源。

具有外部後端的區域性內部 Proxy 網路負載平衡器。
具有外部後端的區域性內部 Proxy 網路負載平衡器 (按一下可放大)。

您只能在進階網路服務級別使用網際網路 NEG。

前端設定

如要建立具有網際網路 NEG 後端的負載平衡器,不需要進行任何特殊前端設定。轉送規則會依據 IP 位址、通訊埠和通訊協定,將流量轉送至目標 Proxy。目標 Proxy 接著會終止來自用戶端的連線。此外,Envoy 型負載平衡器必須具備僅限 Proxy 的子網路。

應用程式負載平衡器也會使用網址對應,根據網址將要求轉送至適當的後端服務。

如要進一步瞭解各個元件,請參閱對應負載平衡器的架構章節:

網際網路 NEG

網際網路 NEG 是一種資源,用於定義負載平衡器的外部後端。網際網路 NEG 分為兩種類型:全域網際網路 NEG 和區域網際網路 NEG。兩者在範圍 (全球與地區) 和行為方面有所不同。全域網際網路 NEG 參照的外部後端必須只能透過網際網路連線,無法透過 Cloud VPN 或 Cloud Interconnect 連線。如果外部後端參照 Google API 或服務,則服務必須可透過 TCP 連接埠 80443,使用 HTTPHTTPSHTTP/2 通訊協定連線。

設定 NEG 參照的外部端點有兩種方式:INTERNET_FQDN_PORTINTERNET_IP_PORT。如果選擇 INTERNET_IP_PORT 格式,只能使用可透過公開網際網路連線的 IP 位址;如果選擇 INTERNET_FQDN_PORT 格式,FQDN 可解析為可透過公開網際網路連線的 IP 位址,或解析為私人 IP 位址,視端點範圍 (區域或全域) 而定。

全球網際網路 NEG 採用 Google Front End (GFE) 技術。這些服務會使用一組固定的 IP 位址,將輸出流量傳送至所有用戶端。每個 NEG 僅支援一個端點,且每個後端服務僅支援一個網際網路 NEG。

下表說明不同負載平衡器對全球網際網路 NEG 的支援情形。

負載平衡器 端點類型 端點定義 範圍 健康狀態檢查
  • 全域外部應用程式負載平衡器
  • 傳統版應用程式負載平衡器

INTERNET_FQDN_PORT

可公開解析的完整網域名稱和選填的通訊埠。例如: backend.example.com:443

網域名稱必須可由 Google 的公用 DNS 基礎架構解析。

每個 NEG 只能有一個端點。

全球 不支援

INTERNET_IP_PORT

可公開路由的 IP 位址和選用通訊埠。例如:8.8.8.8:4431

IP 位址不得為 RFC 1918 位址。

每個 NEG 只能有一個端點。

如果您在新增端點時未指定通訊埠,系統會使用 NEG 的預設通訊埠。如果未指定 NEG 的預設通訊埠,系統會使用後端通訊協定的知名通訊埠 (HTTP 為 80,HTTPS 和 HTTP/2 為 443)。

區域性網際網路 NEG 採用代管 Envoy Proxy。每個 NEG 可以有多個端點,後端服務也可以包含多個網際網路 NEG。

對於輸出流量,您可以設定 Cloud NAT 閘道來設定來源 IP 位址。或者,您也可以使用虛擬私有雲網路中學到的路徑轉送流量。雖然這個路由方法不需要 Cloud NAT,但支援這項服務。

下表說明不同負載平衡器對區域網際網路 NEG 的支援情形。

負載平衡器 端點類型 端點定義 範圍 健康狀態檢查
  • 區域性外部應用程式負載平衡器
  • 區域性內部應用程式負載平衡器
  • 區域性外部 Proxy 網路負載平衡器
  • 區域性內部 Proxy 網路負載平衡器

INTERNET_FQDN_PORT

可公開或私下解析的完整網域名稱,以及選用的通訊埠。例如:backend.example.com:443*

網域名稱解析程序會遵循 Cloud DNS 名稱解析順序程序。

每個 NEG 最多可有 256 個端點。

區域 Envoy 分散式健康狀態檢查

INTERNET_IP_PORT

只能是可公開路由的 IP 位址和選用的通訊埠。例如 8.8.8.8:4432

IP 位址不得為 RFC 1918 位址。

每個 NEG 最多可有 256 個端點。

* 使用區域性網際網路 NEG 時,您必須指定通訊埠。您可以在建立 NEG 時指定預設通訊埠,也可以在每次將端點新增至 NEG 時指定通訊埠,或同時執行這兩項操作。如果在新增端點時未指定通訊埠,系統會使用 NEG 的預設通訊埠。

區域 INTERNET_FQDN_PORT 端點的 DNS 解析

如果網域可透過網際網路解析,則不需要其他設定即可設定 DNS。不過,如果您要解析私有 FQDN,則需要設定 Cloud DNS,以利 DNS 解析。名稱必須託管在 Cloud DNS 上,或是透過從 Cloud DNS 轉送至內部部署 DNS 或 DNS 對等互連的方式解析 (如果參照另一個虛擬私有雲網路中的私人 DNS 區域)。

首先,請建立 Cloud DNS 區域,代管專案中的 DNS 記錄。然後將 DNS 記錄新增至該區域。如需具體設定步驟,請參閱 Cloud DNS 說明文件。如要瞭解 Cloud DNS 解析順序的詳細資訊,請參閱「名稱解析順序」。

如果您使用共用虛擬私有雲,請注意特定的網路需求。您也可以使用 Cloud DNS 的其他功能 (例如轉送區域),從內部部署 DNS 伺服器擷取記錄。

全域 INTERNET_FQDN_PORT 端點的 IP 位址解析

如果 INTERNET_FQDN_PORT 端點指向的 DNS 記錄會傳回多個 IP 位址,系統會以下列方式解析 IP 位址:

  • 負載平衡器會使用網際網路上最接近用戶端的 Google Cloud 區域中的 DNS 解析器。如果 INTERNET_FQDN_PORT 端點的 DNS 記錄會根據用戶端位置傳回不同的 IP 位址,請確保負載平衡器可以連線至每個 IP 位址。

  • 負載平衡器會嘗試連線至 DNS 回應中的第一個 IP 位址。如果無法連線至該 IP 位址,負載平衡器會傳回 HTTP 502 (Bad Gateway) 回應。即使 DNS 回應中提供其他 IP 位址,也無法使用。

如要進一步瞭解 Google DNS 解析器基礎架構使用的 IP 範圍和位置,請參閱 Google 公用 DNS 說明文件。 無法由公開 DNS 系統解析的名稱,無法做為外部後端。

區域 INTERNET_FQDN_PORT 端點的 IP 位址解析

區域網路 NEG 支援使用 Cloud DNS 和 Google 公用 DNS 解析網域名稱。

  • 如果是公用 DNS 解析,Cloud DNS 會將流量轉送至 Google 的公用 DNS 伺服器。
  • 如果是 Cloud DNS,網域名稱必須符合下列條件:
    • 在 Cloud DNS 上代管
    • 可透過從 Cloud DNS 到內部部署 DNS 伺服器的 DNS 轉送功能解析
    • 如果您在其他 VPC 網路中參照私人 DNS 區域,則可使用 DNS 對等互連功能解析。

如果 DNS 伺服器傳回多個 IP 位址,Envoy 會根據設定的負載平衡演算法 (循環配置、最少要求等),在傳回的 IP 位址之間平衡流量。系統會根據 DNS TTL 定期更新端點清單。您可以設定重試政策,強制 Envoy 在連線失敗時嘗試連線至其他 IP 位址。

後端服務

後端服務會將設定資訊提供給負載平衡器,負載平衡器會使用後端服務中的資訊,將傳入流量導向至一或多個連接的後端。

如要設定具有外部後端的負載平衡器,請使用網際網路 NEG 後端設定後端服務。將網際網路 NEG 新增至後端服務時,請注意下列事項 (視 NEG 的範圍而定):

  • 後端服務也不能使用其他後端類型 (例如區域 NEG 或執行個體群組) 做為後端。

  • 每個後端服務的 NEG 數量

    • 全域 NEG。您只能將一個網際網路 NEG 後端新增至後端服務。
  • 每個 NEG 的端點數量

    • 全域 NEG。網際網路 NEG 只能新增一個端點。

      由於每個全域網際網路 NEG 只能有一個端點,因此系統不會實際執行負載平衡。負載平衡器只會做為前端,並將流量 Proxy 至指定的外部後端。也就是說,您無法使用任何負載平衡模式,例如速率、連線或使用率。

    • 區域性 NEG。每個 NEG 最多可新增 256 個端點,並加入同一個後端服務。

    區域性 NEG 不支援負載平衡模式,例如速率、連線或使用率。所有附加至後端服務的 NEG 端點都會匯集到單一群組。系統會使用 Envoy 負載平衡演算法,在這個端點集區之間平衡流量。如要瞭解支援的負載平衡政策演算法,請參閱localityLbPolicy地區後端服務 API 說明文件

  • 安全狀態檢查

  • 後端服務的負載平衡架構必須與您部署的負載平衡器所需架構相符。如需完整清單,請參閱後端服務

  • 後端服務通訊協定必須是 HTTPHTTPSHTTP2

    設定含有網際網路 NEG 的後端服務時,我們強烈建議使用 HTTPS 或 HTTP/2 做為通訊協定,這樣一來,負載平衡器與後端在公用網際網路傳輸資料時,就會經過加密和驗證。

    此外,使用 HTTPS 或 HTTP/2 做為後端通訊協定時,請務必使用 INTERNET_FQDN_PORT 端點建立外部後端。這有兩項優點:

    • 這項功能可確保負載平衡器驗證外部後端提供的 SSL 伺服器憑證,並確認下列資訊正確無誤:

      • 憑證由知名憑證授權單位 (CA) 簽署。
      • 憑證未過期。
      • 憑證簽章有效。
      • 設定的 FQDN 符合憑證中的其中一個主體別名 (SAN)。

      如果您使用 INTERNET_IP_PORT 端點建立外部後端,系統不會執行 SSL 伺服器憑證驗證。

    • SSL 伺服器名稱指示 (SNI) 擴充功能僅支援 INTERNET_FQDN_PORT 端點。在負載平衡器與外部端點之間的 SSL 交握期間,設定的 FQDN 會在用戶端問候訊息中傳送 SNI。使用 INTERNET_IP_PORT 端點時,系統不會傳送 SNI,因為 SNI 酬載的 HostName 欄位不允許使用 IP 位址常值。

健康狀態檢查

健康狀態檢查設定會因負載平衡器類型而異:

  • 全域外部應用程式負載平衡器和傳統版應用程式負載平衡器。具有全域網際網路 NEG 的後端服務不支援健康狀態檢查

    如果外部後端無法連線,或無法解析設定的主機名稱 (完整網域名稱),負載平衡器會向用戶端傳回 HTTP 502 (Bad Gateway) 回應。

  • 區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器、區域性外部 Proxy 網路負載平衡器和區域性內部 Proxy 網路負載平衡器。健康檢查為選用功能。這類負載平衡器的健康狀態檢查探測會從僅限 Proxy 的子網路發出,然後 (透過 Cloud NAT) 轉譯為預先保留的 IP 位址或自動分配的 NAT IP 位址。詳情請參閱「區域性 NEG:使用 Cloud NAT 閘道」。

    建立分散式 Envoy 健康狀態檢查時,請使用與集中式健康狀態檢查相同Google Cloud 的控制台、gcloud CLI 和 API 程序。無需其他設定。

    注意事項:

    • 不支援 gRPC 健康狀態檢查。
    • 不支援啟用 Proxy 通訊協定第 1 版的健康狀態檢查。
    • 由於 Envoy 資料平面會處理健康狀態檢查,因此您無法使用Google Cloud 主控台、API 或 gcloud CLI 檢查這些外部端點的健康狀態。如果是使用 Envoy 型負載平衡器的混合式 NEG,控制台會將健康狀態檢查狀態顯示為 Google Cloud N/A。這是可預期的情況。

    • 指派給虛擬私有雲網路中該地區僅限 Proxy 子網路的每個 Envoy Proxy,都會獨立啟動健康狀態檢查。因此,健康狀態檢查可能會導致網路流量增加。增加的費用取決於指派給區域中虛擬私有雲網路的 Envoy Proxy 數量、這些 Proxy 收到的流量,以及每個 Envoy Proxy 需要進行健康檢查的端點數量。在最糟的情況下,健康狀態檢查造成的網路流量會以二次方 (O(n^2)) 的速率增加。

    • 分散式 Envoy 健康狀態檢查的記錄不會包含詳細的健康狀態。如要瞭解記錄內容,請參閱「健康狀態檢查記錄」。如要進一步排解從 Envoy Proxy 到 NEG 端點的連線問題,也請檢查相關的負載平衡器記錄。

啟用外部後端以接收要求

設定外部後端,允許來自 Google Cloud的流量。

這項程序取決於 NEG 的範圍:全域或區域。

全域 NEG:允許預設 Google 輸出 IP 位址

如果您使用全域網際網路 NEG,請務必將 Google 用於傳送要求至外部後端的 IP 位址範圍加入許可清單。如要查詢要加入允許清單的 IP 位址,請使用 dignslookup 等工具查詢 _cloud-eoips.googleusercontent.com DNS TXT 記錄。

如需範例,請參閱「允許外部後端接收來自Google Cloud的流量」。

區域性 NEG:使用 Cloud NAT 閘道

如果您使用區域性網際網路 NEG,請先設定 Cloud NAT 閘道,從 Google Cloud 流量的來源位置分配一組 IP 位址範圍。

閘道端點應為 ENDPOINT_TYPE_MANAGED_PROXY_LB 類型。

您可以將 Cloud NAT 閘道設為根據需求自動分配外部 IP 位址,或是使用手動預先保留的一組外部 IP 位址。

  • 自動分配的 IP 位址

    如果外部後端環境不需要您將可傳送流量至外部後端的特定 Google CloudIP 位址加入許可清單,請使用自動分配的 IP 位址。

  • 手動指派的 IP 位址

    只有在外部後端環境要求您將特定 Google Cloud IP 位址加入許可清單時,才使用手動分配的 IP 位址。由於指派給 Proxy 子網路的每個 Envoy 都會耗用整個 IP 位址,請確保保留的 IP 位址集區夠大,可容納所有 Envoy。

    如果大規模發生連線問題,請檢查是否已達到 Cloud NAT 限制。根據預設,每個閘道最多只能手動指派 50 個 NAT IP 位址。

區域性網際網路 NEG 支援動態通訊埠分配。Proxy 可以共用 IP 位址,充分利用這些位址。

這項 Cloud NAT 設定會套用至整個僅限 Proxy 的子網路。 該區域中所有區域 Envoy 型負載平衡器的網際網路流量,都會共用同一個 NAT 閘道。

使用者流量和健康狀態檢查流量都會產生 Cloud NAT 用量費用。如要進一步瞭解區域性網際網路 NEG 定價方式,請參閱區域性網際網路 NEG 定價

在僅限 Proxy 的子網路上設定 NAT 閘道時,須遵守下列限制:

  • 只會執行一對一 NAT 轉換。系統不支援分享 IP 位址。
  • 不支援記錄和監控功能。也就是說,系統不支援 --enable-logging--log-filter 旗標。

驗證對外部後端的要求

本節內容僅適用於應用程式負載平衡器。

如要驗證傳送至外部後端的要求,可以採取下列其中一種做法:

  • 使用自訂要求標頭設定自訂標頭,指出要求來自 Google Cloud 負載平衡器。 舉例來說,您可以使用 16 個以上的加密隨機位元組做為共用金鑰。

    實作自訂標頭轉換作業時,請視使用的負載平衡器類型而定:

    • 全域外部應用程式負載平衡器和傳統版應用程式負載平衡器。您可以在後端服務URL 對應中設定自訂標頭轉換。

      舉例來說,您可以將外部後端設為預期 HTTP 要求的 Host 標頭具有特定值,並將負載平衡器設為將 Host 標頭設為該預期值。如果未設定自訂要求標頭,負載平衡器會保留用戶端用於連線至負載平衡器的標頭,並在回應中加入相同標頭。不過請注意,Host 標頭「不支援」在網址對應中修改

      設定 Host 標頭時,還會遇到其他限制。詳情請參閱「在後端服務中建立自訂標頭」。如需具體範例,請參閱「設定具有外部後端的全域外部應用程式負載平衡器」。

    • 區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器。自訂標頭轉換只能在網址對應中設定。

      對於這些以 Envoy 為基礎的負載平衡器,Hostauthority 是 Google Cloud保留的特殊關鍵字。您無法修改這些負載平衡器的標頭。建議您改為建立其他自訂標頭 (例如 MyHost),以免干擾保留的標頭名稱。

  • 啟用 IAP,並確認要求標頭中的已簽署 JWT 是由 Google 簽署,且 aud (目標對象) 憑證附加資訊包含定義負載平衡器的專案編號。

    注意事項:

    • IAP 與 Cloud CDN 不相容。
    • Proxy 網路負載平衡器 (內部和外部) 不支援 IAP。
  • 啟用私有來源驗證,讓外部 Application Load Balancer 長期存取私有 Amazon Simple Storage Service (Amazon S3) 儲存桶或其他相容物件儲存庫。區域外部應用程式負載平衡器和區域內部應用程式負載平衡器不支援 Cloud CDN (因此也不支援私有來源驗證)。

記錄

系統會將 Proxy 要求傳送至外部後端,並以記錄其他後端要求的方式,將這些要求記錄至 Cloud Logging。

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

如果您使用外部後端為外部應用程式負載平衡器啟用 Cloud CDN,系統也會記錄快取命中。

使用外部後端處理標頭

當負載平衡器將要求 Proxy 至外部後端時,可能會以不同方式處理標頭。請參閱下列資訊,瞭解負載平衡器類型如何處理 HTTP 標頭。

全域外部應用程式負載平衡器和傳統版應用程式負載平衡器

當全域外部應用程式負載平衡器或傳統應用程式負載平衡器將要求 Proxy 至外部後端時,會以以下方式調整 HTTP 標頭:

  • 部分標題已合併。如果出現多個相同的標頭鍵 (例如 Via),負載平衡器會將這些值合併為單一標頭鍵的逗號分隔清單。只有值可表示為以半形逗號分隔清單的標頭會合併。其他標頭 (例如 Set-Cookie) 一律不會合併。

  • 如果後端服務的通訊協定為 HTTPHTTPS,標頭會採用適當的大小寫:

    • 標頭鍵的第一個字母和連字號 (-) 後的每個字母都會大寫,以確保與 HTTP/1.1 用戶端相容。舉例來說,user-agent 會變更為 User-Agentcontent-encoding 則會變更為 Content-Encoding

    • 系統會轉換特定標頭 (例如 Accept-CH (client hints)),以符合標準的混合字母表示法。

  • 系統會新增部分標頭,或在標頭中附加值。外部應用程式負載平衡器一律會新增或修改特定標頭,例如 ViaX-Forwarded-For

區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器

使用網際網路 NEG 的 Envoy 負載平衡器不會進行特殊標頭處理。如要瞭解 Envoy 通常如何處理標頭,請參閱「HTTP 標頭操控」。

限制

  • 如要瞭解將網際網路 NEG 設定為後端時的相關限制,請參閱後端服務一節
  • 如果修改負載平衡器,將後端從網際網路 NEG 變更為任何其他後端類型,或將後端從任何其他後端類型變更為網際網路 NEG,應用程式會暫時停機約 30 到 90 秒。 舉例來說,在停機期間,用戶端傳送至全域外部應用程式負載平衡器的要求會出現 502 錯誤,錯誤代碼為 failed_to_connect_to_backend。這是預期中的行為。
  • 全域網際網路 NEG 後端不支援下列進階流量管理功能:
    • 要求鏡像
    • 重試政策
    • 流量政策 (包括負載平衡地區政策、工作階段相依性和離群值偵測)
  • 如要瞭解在僅限 Proxy 的子網路上設定 NAT 閘道時的限制,請參閱「Cloud NAT 閘道」一節。

配額與限制

如要瞭解配額和限制,請參閱 NEG 後端配額表每個 NEG 的端點配額表

定價

輸出至外部網際網路 NEG 端點的流量,會按照進階級網路的網際網路輸出費率計費。來源是根據用戶端位置,目的地是根據公開端點位置。

如果您設定 Cloud NAT 閘道,將區域 Envoy 型負載平衡器的僅限 Proxy 子網路對應至該閘道,就會產生 Cloud NAT 費用。分配給負載平衡器的 Cloud NAT 閘道,每小時產生的費用等同於具備 32 個 VM 執行個體以上的網路。詳情請參閱「Cloud NAT 定價」一文。

詳情請參閱 Cloud Load Balancing 定價

後續步驟