網路端點群組 (NEG) 會指定負載平衡器的後端端點群組。無伺服器 NEG 是指向 Cloud Run、App Engine、Cloud Run 函式或 API Gateway 資源的後端。
無伺服器 NEG 可以代表下列其中一項:
- Cloud Run 資源或資源群組。
- Cloud Run 函式或函式群組 (舊稱 Cloud Run 函式第 2 代)。
- Cloud Run 函式 (第 1 代) 或函式群組
- App Engine 標準環境或彈性環境應用程式、應用程式中的特定服務、應用程式的特定版本,或一組服務。
- API Gateway,可透過REST API 存取服務,無論服務實作機制為何,所有服務都可使用一致的 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 保護服務,這是邊緣分散式阻斷服務防護和 WAF 安全性產品,適用於透過外部應用程式負載平衡器存取的所有服務。這項功能有一些限制,特別是 Cloud Run 和 App Engine。
- 啟用服務,使用 Cloud CDN 最佳化傳送作業。 Cloud CDN 會將內容快取至較靠近使用者的位置。Cloud CDN 提供快取撤銷和 Cloud CDN 已簽署網址等功能。
- 使用 Google 的 Edge 基礎架構,在更靠近使用者的位置終止使用者 HTTP(S) 連線,進而縮短延遲時間。
如要瞭解如何設定負載平衡器和無伺服器運算後端,請參閱下列說明文件:
- 設定具有 Cloud Run、App Engine 或 Cloud Run functions 的全域外部應用程式負載平衡器
- 為 Cloud Run、App Engine 或 Cloud Run functions 設定傳統版應用程式負載平衡器
將外部應用程式負載平衡器與 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 函式資源。
建立無伺服器 NEG 時,請指定 Cloud Run、App Engine、API Gateway 或 Cloud Run 函式資源的完整網域名稱 (FQDN)。端點類型為 SERVERLESS
。無伺服器 NEG 不支援其他端點類型。
無伺服器 NEG 的端點數量不得超過一個。端點會指向無伺服器應用程式或 URL 遮罩。負載平衡器可做為無伺服器運算應用程式的前端,並將流量 Proxy 至指定的端點。不過,如果後端服務在不同區域中包含多個無伺服器 NEG,負載平衡器會將流量傳送至最接近的區域中的 NEG,以盡量縮短要求延遲時間。
網路級別
對於全域外部應用程式負載平衡器,您可以在負載平衡器中使用無伺服器 NEG,方法是使用「標準」或「進階」網路服務級別。只有在多個區域設定無伺服器 NEG 時,才需要使用進階層級。
區域性外部應用程式負載平衡器一律為標準級。
跨區域內部應用程式負載平衡器和區域內部應用程式負載平衡器一律為進階級。
負載平衡元件
使用無伺服器 NEG 後端的負載平衡器,僅需為後端服務進行特殊設定。前端設定與任何其他以 Proxy 為基礎的 Google Cloud 負載平衡器相同。此外,內部應用程式負載平衡器需要僅限 Proxy 的子網路,才能代表您執行 Envoy Proxy。
下圖顯示無伺服器 NEG 部署範例。
全域外部
下圖顯示無伺服器 NEG 在全域外部應用程式負載平衡器架構中的位置。
區域型外部
這張圖表顯示無伺服器 NEG 在區域性外部應用程式負載平衡器架構中的位置。
區域型內部
下圖顯示無伺服器 NEG 在區域內部應用程式負載平衡器模型中的位置。
跨地區
這張圖表顯示無伺服器 NEG 在跨區域內部應用程式負載平衡器模型中的位置。
前端元件
使用無伺服器 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,請參閱全球後端服務 API 說明文件中的 outlierDetection
。
如果後端服務已附加無伺服器 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 後端,只要為自訂網域建立具有一般網址遮罩的單一無伺服器 NEG 即可 (例如 example.com/<service>
)。NEG 會從要求網址中擷取服務名稱。
下圖顯示外部應用程式負載平衡器,其中包含單一後端服務和無伺服器 NEG,並使用網址遮罩將使用者要求對應至不同服務。
如果應用程式的資源使用可預測的網址結構,網址遮罩就能發揮最大效用。使用網址遮罩而非網址對應的優點是,您不必為 login
和 search
服務建立個別的無伺服器 NEG。此外,每次在應用程式中新增資源時,您也不需要修改負載平衡器設定。
限制
- 無伺服器 NEG 不得有任何網路端點,例如 IP 位址或通訊埠。
- 無伺服器 NEG 只能指向與 NEG 位於相同區域的無伺服器資源。
- 如果負載平衡器使用無伺服器 NEG 後端,則無伺服器 NEG 必須與 NEG 指向的支援 Cloud Run、App Engine、API Gateway 或 Cloud Run functions 資源位於相同專案。如果連線的服務與無伺服器 NEG 不在同一個專案中,您可能會看到要求失敗。
- 如果負載平衡器設定了無伺服器 NEG,就無法偵測基礎無伺服器資源是否正常運作。這表示即使資源傳回錯誤,負載平衡器仍會繼續將流量導向該資源。請務必先徹底測試新版資源,再將使用者流量導向這些資源。
後端服務的限制
如果後端服務有無伺服器 NEG 後端,則適用下列限制:
- 全域外部應用程式負載平衡器使用的全域後端服務,每個區域只能有一個無伺服器 NEG 。如要在單一後端服務中合併多個無伺服器 NEG,所有 NEG 都必須代表不同區域中功能相同的部署作業。舉例來說,NEG 可以指向部署在不同區域的相同 Cloud Run、App Engine 或 Cloud Run 函式資源。
- 跨區域內部應用程式負載平衡器使用的全域後端服務,只能附加一個 Cloud Run 或 Cloud Run functions (第 2 代) 資源。
- 區域後端服務只能附加一個無伺服器 NEG。
- 在共用虛擬私有雲部署中,如果設定包含無伺服器 NEG,則支援跨專案參照服務。如要使用這項功能,請在與負載平衡器後端元件 (後端服務和無伺服器 NEG) 不同的專案中,建立負載平衡器的前端元件 (IP 位址、轉送規則、目標 Proxy 和網址對應)。請注意,後端服務、相關聯的無伺服器 NEG,以及支援的無伺服器資源 (Cloud Run、App Engine、API Gateway 或 Cloud Run 函式),一律必須在同一個專案中建立。
- 後端服務逾時設定不適用於具有無伺服器 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,則透過區域性外部應用程式負載平衡器或區域性內部應用程式負載平衡器傳送至任何無伺服器 NEG 的流量,每專案的每秒查詢次數 (QPS) 上限為 5000。這項限制會彙整專案中所有區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器。這不是每個負載平衡器的限制。
跨區域內部應用程式負載平衡器的限制
- 搭配跨區域內部應用程式負載平衡器使用的無伺服器 NEG,只能指向 Cloud Run 或 Cloud Run functions (第 2 代) 資源。
全域外部應用程式負載平衡器的限制
本節列出使用全域外部應用程式負載平衡器設定無伺服器 NEG 時會遇到的限制。
Cloud Run 的限制
- 無伺服器 NEG 的外部應用程式負載平衡器不支援 Knative 服務。
- 外部應用程式負載平衡器不支援驗證使用者對 Cloud Run 資源的要求。不過,您可以使用 IAP 驗證貴機構中的使用者。如要啟用 IAP,請注意 IAP 和 Cloud CDN 彼此不相容。無法在同一個後端服務上啟用。
App Engine 的限制
- App Engine 不支援多區域負載平衡。這是因為每個專案只能有 1 個 App Engine 區域。
- 如果您使用 IAP,與單一負載平衡器相關聯的所有 App Engine 服務都必須使用相同的 OAuth 用戶端 ID。
- 要求路徑只能有一項應用程式內商品政策。舉例來說,如果您已在後端服務中設定 IAP 政策,就不應在 App Engine 應用程式中設定其他 IAP 政策。
- 全域外部應用程式負載平衡器不支援跨專案服務參照,無論後端是 App Engine 彈性環境還是 App Engine 標準環境都一樣。
- 建議您使用 Ingress 控制項,確保應用程式只會接收負載平衡器 (以及您使用的 VPC) 傳送的要求。否則,使用者可以透過應用程式的 App Engine 網址略過負載平衡器、Cloud Armor 安全性政策、SSL 憑證,以及透過負載平衡器傳遞的私密金鑰。
API Gateway 的限制
詳情請參閱「無伺服器 NEG 和 API Gateway 的限制」一文。
流量管理功能限制
- 無伺服器 NEG 後端不支援進階流量管理功能,例如負載平衡地區政策和工作階段親和性。
- 在具有無伺服器 NEG 後端的後端服務上指定工作階段相依性,不會有任何作用。如要解決 Cloud Run 的問題,請使用其專屬的工作階段相依性功能。
定價
如要查看無伺服器 NEG 負載平衡器的定價資訊,請參閱「所有網路定價:Cloud Load Balancing」一文。
後續步驟
- 設定具有 Cloud Run、App Engine 或 Cloud Run functions 的全域外部應用程式負載平衡器
- 為 Cloud Run、App Engine 或 Cloud Run functions 設定傳統版應用程式負載平衡器
- 設定具有 Cloud Run 後端的區域外部應用程式負載平衡器
- 設定後端為 Cloud Run 的區域內部應用程式負載平衡器
- 使用 Cloud Run 設定跨區域內部應用程式負載平衡器