無伺服器網路端點群組總覽

網路端點群組 (NEG) 會指定負載平衡器的一組後端端點。無伺服器 NEG 是指向 Cloud Run、App Engine、Cloud Run functions 或 API Gateway 資源的後端。

無伺服器 NEG 可代表下列其中一項:

  • Cloud Run 資源或一組資源。
  • Cloud Run 函式或一組函式 (舊稱 Cloud Run functions 第 2 代)。
  • Cloud Run 函式 (第 1 代) 或函式群組
  • App Engine 標準環境或 App Engine 彈性環境應用程式、應用程式中的特定服務、應用程式的特定版本,或一組服務。
  • API Gateway:無論服務實作機制為何,都能透過所有服務一致的 REST API 提供服務存取權。這項功能為預先發布版。

支援的負載平衡器

下表列出各個應用程式負載平衡器支援的無伺服器產品。Proxy 網路負載平衡器和直通式網路負載平衡器不支援無伺服器 NEG。

無伺服器 NEG 類型 應用程式負載平衡器
區域型
內部
跨區域
內部
全域
外部
傳統版 區域型
外部

Cloud Run

支援 Cloud Run 和 Cloud Run functions (第 2 代)

App Engine

Cloud Functions

支援 Cloud Run functions (第 1 代), 舊稱 Cloud Functions 第 1 代

用途

為無伺服器應用程式啟用負載平衡器後,即可執行下列操作:

  • 設定無伺服器應用程式,從沒有和其他服務共用的專屬 IPv4 IP 位址提供服務。
  • 將單一網址對應至多個無伺服器函式或服務,這些函式或服務位於相同網域。請參閱本文的「網址遮蓋」一節。
  • 與其他 Google Cloud 運算平台共用網址空間。透過多項後端服務,單一負載平衡器可以將流量傳送至多種後端類型。負載平衡器會根據要求網址的主機或路徑,選取正確的後端服務。
  • 重複使用在 Compute Engine、Google Kubernetes Engine 和 Cloud Storage 中使用的 SSL 憑證和私密金鑰,重複使用相同憑證,就不必為無伺服器應用程式管理個別憑證。

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

設定全域外部應用程式負載平衡器或傳統版應用程式負載平衡器,即可讓無伺服器應用程式與現有雲端服務整合。你可以執行下列操作:

  • Google Cloud Armor 是一項邊緣 DDoS 防禦和 WAF 安全性產品,適用於所有透過外部應用程式負載平衡器存取的服務,可保護您的服務。這項功能有一些限制,尤其是 Cloud Run 和 App Engine。
  • 啟用服務,使用 Cloud CDN 提升傳遞效率。 Cloud CDN 會將內容快取至較靠近使用者的位置。Cloud CDN 提供快取撤銷和 Cloud CDN 經簽署的網址等功能。
  • 使用 Google 的邊緣基礎架構,在更靠近使用者的位置終止使用者的 HTTP(S) 連線,進而縮短延遲時間。

如要瞭解如何設定具備無伺服器運算後端的負載平衡器,請參閱下列說明文件:

將外部應用程式負載平衡器與 API Gateway 整合後,無伺服器後端可充分運用 Cloud Load Balancing 提供的所有功能。詳情請參閱「API Gateway 的外部應用程式負載平衡器」。如要設定外部應用程式負載平衡器,將流量轉送至 API Gateway,請參閱「開始使用外部應用程式負載平衡器搭配 API Gateway」。這項功能為預先發布版。

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

使用區域外部應用程式負載平衡器,即可在 Cloud Run 或 Cloud Run functions (第 2 代) 後端執行工作負載,並符合法規或法規遵循要求。舉例來說,如果您要求應用程式的網路設定和流量終止作業位於特定區域,區域性外部應用程式負載平衡器通常是符合必要管轄區控管機制的首選選項。

如要瞭解如何設定具備無伺服器運算後端的區域性外部應用程式負載平衡器,請參閱「使用 Cloud Run 設定區域性外部應用程式負載平衡器」。

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

如果內部應用程式負載平衡器設定了 Cloud Run 或 Cloud Run functions (第 2 代) 後端,您可以執行下列操作:

  • 為 Cloud Run 和 Cloud Run functions (第 2 代) 服務啟用進階流量管理功能,例如錯誤插入、標頭重寫、重新導向、流量拆分等。
  • 將 Compute Engine、GKE 或地端部署的舊版服務,順暢遷移至 Cloud Run 和 Cloud Run functions (第 2 代),善用以權重為準的流量分配功能,逐步將流量轉移至 Cloud Run,完全不會發生停機問題。
  • 使用 VPC Service Controls 保護 Cloud Run 和 Cloud Run functions (第 2 代) 服務。
  • 為在 Cloud Run、Cloud Run functions (第 2 代)、Compute Engine 和 GKE 中執行的服務,建立單一且強制執行政策的內部輸入點。

如要瞭解如何設定區域內部應用程式負載平衡器,並搭配無伺服器運算後端,請參閱「設定區域內部應用程式負載平衡器並搭配 Cloud Run」。

本頁其餘內容說明如何搭配應用程式負載平衡器使用無伺服器 NEG。如要進一步瞭解其他類型的 NEG,請參閱「網路端點群組概念總覽」。

端點類型

無伺服器 NEG 沒有任何網路端點,例如通訊埠或 IP 位址。 只能指向與 NEG 位於相同區域的現有 Cloud Run、App Engine、API Gateway 或 Cloud Run functions 資源。

建立無伺服器 NEG 時,您必須指定 Cloud Run、App Engine、API Gateway 或 Cloud Run functions 資源的完整網域名稱 (FQDN)。端點類型為 SERVERLESS。無伺服器 NEG 不支援其他端點類型。

無伺服器 NEG 只能有一個端點。端點會指向無伺服器應用程式或網址遮罩。負載平衡器會做為無伺服器運算應用程式的前端,並將流量 Proxy 至指定的端點。不過,如果後端服務在不同區域中包含多個無伺服器 NEG,負載平衡器會將流量傳送至最接近區域中的 NEG,盡可能縮短要求延遲時間。

網路級別

如果是全域外部應用程式負載平衡器,您可以在使用標準或進階網路服務級別的負載平衡器中,使用無伺服器 NEG。如要在多個區域設定無伺服器 NEG,才需要使用進階級。

區域性外部應用程式負載平衡器一律為標準級。

跨區域內部應用程式負載平衡器和區域性內部應用程式負載平衡器一律為進階級。

負載平衡元件

使用無伺服器 NEG 後端的負載平衡器,僅需對後端服務進行特殊設定。前端設定與任何其他 Proxy Google Cloud 負載平衡器相同。此外,內部應用程式負載平衡器需要 Proxy 專用子網路,才能代您執行 Envoy Proxy。

下圖顯示無伺服器 NEG 部署作業範例。

全域外部

下圖顯示無伺服器 NEG 如何納入全域外部應用程式負載平衡器架構。

適用於無伺服器應用程式的全域外部應用程式負載平衡器。
無伺服器應用程式的全域外部應用程式負載平衡器 (按一下即可放大)。

區域型外部

這張圖表顯示無伺服器 NEG 如何融入區域性外部應用程式負載平衡器架構。

無伺服器應用程式的區域性外部應用程式負載平衡器。
無伺服器應用程式的區域性外部應用程式負載平衡器 (按一下即可放大)。

區域型內部

這張圖表顯示無伺服器 NEG 如何融入區域性內部應用程式負載平衡器模型。

適用於無伺服器應用程式的區域性內部應用程式負載平衡器。
無伺服器應用程式的區域性內部應用程式負載平衡器 (按一下即可放大)。

跨地區

這張圖表顯示無伺服器 NEG 如何融入跨區域內部應用程式負載平衡器模型。

部署 Cloud Run 的跨區域內部應用程式負載平衡器。
已部署 Cloud Run 的跨區域內部應用程式負載平衡器 (按一下即可放大)。

前端元件

使用無伺服器 NEG 後端進行負載平衡時,不需要特別設定前端。轉送規則會依據 IP 位址、通訊埠和通訊協定,將流量轉送至目標 Proxy。接著,目標 Proxy 會終止用戶端連線。

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

如要進一步瞭解各項元件,請參閱特定負載平衡器總覽的架構部分:

後端服務

後端服務會向負載平衡器提供設定資訊。負載平衡器會使用後端服務中的資訊,將傳入流量導向一或多個連接的後端。無伺服器 NEG 可做為特定負載平衡器的後端。

視負載平衡器類型而定,適用下列限制:

  • 全域外部應用程式負載平衡器使用的全域後端服務可以附加多個無伺服器 NEG,但每個區域只能有一個無伺服器 NEG。
  • 區域性內部應用程式負載平衡器和區域性外部應用程式負載平衡器使用的區域性後端服務,只能附加一個無伺服器 NEG。
  • 跨區域內部應用程式負載平衡器使用的全域後端服務,只能附加 Cloud Run 和 Cloud Run functions (第 2 代) 資源。

每個無伺服器 NEG 可以指向下列任一項目:

  • 單一資源的 FQDN
  • 網址遮罩,指向在相同網域中提供服務的多項資源

網址遮罩是網址結構定義範本,可指示無伺服器 NEG 後端如何將使用者要求對應至正確的服務。如果您為無伺服器應用程式使用自訂網域,且有多個服務在相同網域提供服務,網址遮罩就非常實用。不必為每個資源建立個別的無伺服器 NEG,您可以為自訂網域建立含有通用網址遮罩的 NEG。如需更多資訊和範例,請參閱「網址遮罩」。

如要瞭解將無伺服器 NEG 新增為後端時的其他限制,請參閱「限制」一節。

無伺服器 NEG 的離群值偵測

離群值偵測是選用設定,可針對已附加無伺服器 NEG 的全域後端服務啟用。離群值偵測分析僅適用於跨區域內部應用程式負載平衡器和全域外部應用程式負載平衡器,不適用於傳統版應用程式負載平衡器。離群值偵測分析會根據 HTTP 回應模式,找出異常的無伺服器 NEG,並將大部分新要求從異常資源轉送至正常資源,降低錯誤率。如要瞭解離群值偵測演算法的運作方式和限制,請參閱以下範例。

假設某項後端服務附加了兩個無伺服器 NEG,一個位於 REGION_A 區域,另一個位於 REGION_B 區域。如果 REGION_A 區域的無伺服器 NEG 做為全域外部應用程式負載平衡器的後端,且無法回應,離群值偵測功能會將該無伺服器 NEG 識別為健康狀態不良。根據離群值偵測分析,部分新要求會傳送至 REGION_B 區域中的無伺服器 NEG。

根據遇到的伺服器錯誤類型,您可以使用下列其中一種離群值偵測方法啟用離群值偵測:

  • 連續發生 5xx 錯誤。5xx 系列 HTTP 狀態碼會視為錯誤。
  • 連續發生閘道錯誤。只有 502、503 和 504 HTTP 狀態碼符合錯誤資格。

請注意,即使啟用離群值偵測功能,系統仍可能會將部分要求傳送至不正常的資源,因此向用戶端傳回 5XX 錯誤。這是因為異常情況偵測演算法的結果 (從負載平衡集區中排除端點,並將其返回集區) 是由負載平衡器的每個 Proxy 執行個體獨立執行。在多數情況下,後端服務收到的流量會由多個 Proxy 執行個體處理。因此,只有部分 Proxy 可能會偵測到健康狀態不良的端點並將其排除,而其他 Proxy 可能會繼續將要求傳送至同一個健康狀態不良的端點。

如要進一步降低錯誤率,您可以設定更積極的離群值偵測參數。建議您為驅逐閾值 (outlierDetection.baseEjectionTime) 設定較高的值。舉例來說,我們的測試顯示,如果將 outlierDetection.baseEjectionTime 設為 180 秒,且持續 QPS 高於 100,則觀察到的錯誤率會低於 5%。如要進一步瞭解離群值偵測 API,請參閱outlierDetection全域後端服務 API 說明文件。

如果後端服務附加了無伺服器 NEG,則不支援下列 outlierDetection 欄位:

  • outlierDetection.enforcingSuccessRate
  • outlierDetection.successRateMinimumHosts
  • outlierDetection.successRateRequestVolume
  • outlierDetection.successRateStdevFactor

如要瞭解如何設定離群值偵測功能,請參閱「設定具備無伺服器後端的全域外部應用程式負載平衡器:啟用離群值偵測功能」。

網址遮罩

無伺服器 NEG 後端可以指向單一 Cloud Run (或 App Engine 或 Cloud Run functions,如適用) 資源,也可以指向網址遮罩,該遮罩會指向多個資源。網址遮罩是網址架構的範本,無伺服器 NEG 會使用這個範本,將要求對應至適當的資源。

網址遮罩是選用功能,如果無伺服器應用程式是由多個 Cloud Run、Cloud Run functions 或 App Engine 資源組成,您可以使用這項功能,輕鬆設定無伺服器 NEG。搭配內部應用程式負載平衡器使用的無伺服器 NEG,只能使用指向 Cloud Run 或 Cloud Run functions (第 2 代) 服務的網址遮罩。

如果無伺服器應用程式對應的是自訂網域,而非 Google Cloud 提供的預設位址,網址遮罩就非常實用。如果使用自訂網域 (例如 example.com),您可以將多項資源部署到同一網域的不同子網域或路徑。在這種情況下,您不必為每個資源建立個別的無伺服器 NEG 後端,只要為自訂網域 (例如 example.com/<service>) 建立具有一般網址遮罩的單一無伺服器 NEG 即可。NEG 會從要求網址中擷取服務名稱。

下圖顯示外部應用程式負載平衡器,其中包含單一後端服務和無伺服器 NEG,並使用網址遮罩將使用者要求對應至不同服務。

將流量分配給無伺服器應用程式。
使用網址遮罩將流量分配至不同服務 (按一下即可放大)。

如果應用程式的資源使用可預測的網址結構,網址遮罩就能發揮最大效用。使用網址遮罩而非網址對應的好處是,您不必為 login 和 search 服務建立個別的無伺服器 NEG。此外,每次在應用程式中新增資源時,您也不需要修改負載平衡器設定。

限制

  • 無伺服器 NEG 不得有任何網路端點,例如 IP 位址或通訊埠。
  • 無伺服器 NEG 只能指向與 NEG 位於相同區域的無伺服器資源。
  • 如果負載平衡器使用無伺服器 NEG 後端,無伺服器 NEG 必須與 NEG 指向的支援 Cloud Run、App Engine、API Gateway 或 Cloud Run functions 資源位於同一個專案。如果連結的服務與無伺服器 NEG 不在同一個專案中,要求可能會失敗。
  • 除非您已設定 Cloud Run Service Health或啟用離群值偵測,否則設定無伺服器 NEG 的負載平衡器無法偵測基礎資源是否正常運作。也就是說,即使資源傳回錯誤,負載平衡器仍會繼續將流量導向該資源。請務必先充分測試新版資源,再將使用者流量導向這些資源。

    如要自動將流量從健康狀態不良的無伺服器 NEG 容錯移轉,您可以在全域和跨區域負載平衡器上使用下列方法:

    • 離群值偵測:全域外部應用程式負載平衡器和跨區域內部應用程式負載平衡器支援這項功能,可根據 HTTP 回應模式找出健康狀態不良的無伺服器 NEG。
    • Cloud Run Service Health:支援全域外部應用程式負載平衡器,以及設定無伺服器 NEG 後端的跨區域內部應用程式負載平衡器。
  • Google Cloud 控制台。您只能在使用 控制台 Google Cloud 的「Load balancing」(負載平衡) 頁面 建立或編輯負載平衡器時,建立無伺服器 NEG。您無法在「網路端點群組」頁面上建立或編輯無伺服器 NEG,但可以在這個頁面查看專案中所有無伺服器 NEG 的清單。

後端服務的限制

如果後端服務有無伺服器 NEG 後端,則適用下列限制:

  • 全域外部應用程式負載平衡器使用的全域後端服務,每個區域只能有一個無伺服器 NEG。如要在單一後端服務中合併多個無伺服器 NEG,所有 NEG 都必須代表不同區域中功能相同的部署作業。舉例來說,NEG 可以指向部署在不同區域的相同 Cloud Run、App Engine 或 Cloud Run functions 資源。
  • 跨區域內部應用程式負載平衡器使用的全域後端服務,只能附加一個 Cloud Run 或 Cloud Run functions (第 2 代) 資源。
  • 區域後端服務只能附加一個無伺服器 NEG。
  • 如果設定包含無伺服器 NEG,則支援在 Shared VPC 部署中跨專案參照服務。如要使用這項功能,請在與負載平衡器後端元件 (後端服務和無伺服器 NEG) 不同的專案中,建立負載平衡器的前端元件 (IP 位址、轉送規則、目標 Proxy 和網址對應)。請注意,後端服務、相關聯的無伺服器 NEG,以及支援的無伺服器資源 (Cloud Run、App Engine、API Gateway 或 Cloud Run functions),一律必須在同一個專案中建立。
  • 後端服務逾時設定不適用於採用無伺服器 NEG 後端的後端服務。如果嘗試修改後端服務的 resource.timeoutSec 屬性,會發生下列錯誤:Timeout sec is not supported for a backend service with Serverless network endpoint groups。
    如果後端服務的後端是無伺服器 NEG,預設逾時時間為 60 分鐘。這個逾時時間無法設定。如果應用程式需要長期連線,請將用戶端設為在要求失敗時重試。
  • 在後端服務中合併的所有無伺服器 NEG 也必須使用相同類型的後端。也就是說,Cloud Run 無伺服器 NEG 只能與其他 Cloud Run 無伺服器 NEG 組合,App Engine 無伺服器 NEG 只能與 App Engine 無伺服器 NEG 組合。
  • 您無法在同一個後端服務中,將無伺服器 NEG 與其他類型的 NEG 混用。舉例來說,您無法從同一個後端服務,將流量導向 GKE 叢集和 Cloud Run 服務。
  • 設定會將流量導向無伺服器 NEG 的後端服務時,某些欄位會受到限制:
    • 您無法指定平衡模式。也就是說,RATE、UTILIZATION 和 CONNECTION 值不會影響負載平衡器的流量分配。
    • 無伺服器後端不支援健康狀態檢查。因此,包含無伺服器 NEG 後端的後端服務無法設定健康狀態檢查。不過,您可以選擇啟用離群值偵測功能,找出健康狀態不良的無伺服器資源,並將新要求轉送至健康狀態良好的無伺服器資源。
  • 您無法使用 gcloud compute backend-services edit 指令修改具有無伺服器 NEG 後端的後端服務。如要解決這個問題,請改用 gcloud compute backend-services update 指令。

視負載平衡器和無伺服器後端的類型而定,可能會有其他限制。

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

  • 搭配區域內部應用程式負載平衡器或區域外部應用程式負載平衡器使用的無伺服器 NEG,只能指向 Cloud Run 或 Cloud Run functions (第 2 代) 資源。
  • 如果專案使用無伺服器 NEG,則每秒查詢次數 (QPS) 限制為每項專案 5000 QPS,適用於傳送至任何無伺服器 NEG 的流量,這些 NEG 設定了區域性外部應用程式負載平衡器或區域性內部應用程式負載平衡器。這項限制是專案中所有區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器的匯總值。這並非個別負載平衡器的限制。

跨區域內部應用程式負載平衡器的限制

  • 與跨區域內部應用程式負載平衡器搭配使用的無伺服器 NEG,只能指向 Cloud Run 或 Cloud Run functions (第 2 代) 資源。

全域外部應用程式負載平衡器的限制

本節列出使用全域外部應用程式負載平衡器設定無伺服器 NEG 時,會遇到的限制。

Cloud Run 的限制

App Engine 的限制

  • App Engine 不支援多區域負載平衡。這是因為 App Engine 要求每項專案只能有 1 個區域。
  • 如果您使用 IAP,則與單一負載平衡器相關聯的所有 App Engine 服務,都必須使用相同的 OAuth 用戶端 ID。
  • 要求路徑只能有一項 IAP 政策。舉例來說,如果您已在後端服務中設定 IAP 政策,就不應在 App Engine 應用程式中設定其他 IAP 政策。
  • 全域外部應用程式負載平衡器同時具備 App Engine 彈性環境後端和 App Engine 標準環境後端時,不支援跨專案服務參照。
  • 建議您使用輸入控制項,讓應用程式只接收從負載平衡器 (以及虛擬私有雲,如有使用) 傳送的要求。否則,使用者可以透過應用程式的 App Engine 網址,略過負載平衡器、Cloud Armor 安全性政策、SSL 憑證,以及透過負載平衡器傳遞的私密金鑰。

API Gateway 的限制

詳情請參閱「無伺服器 NEG 和 API Gateway 的限制」。

流量管理功能限制

  • 使用無伺服器 NEG 後端時,不支援進階流量管理功能,例如負載平衡地區政策和工作階段親和性。
  • 在後端服務中指定工作階段相依性,並使用無伺服器 NEG 後端,將無法正常運作。如要解決 Cloud Run 的問題,請使用其專屬的工作階段相依性功能。

定價

如需定價資訊,請參閱「網路定價:Cloud Load Balancing」。

後續步驟