網路端點群組 (NEG) 會為負載平衡器指定一組後端端點。無伺服器 NEG 是指向 Cloud Run、App Engine、Cloud Run 函式或 API Gateway 資源的後端。
無伺服器 NEG 可代表下列任一項目:
- Cloud Run 資源或一組資源。
- Cloud Run 函式或一組函式 (舊稱 Cloud Run 函式第 2 代)。
- Cloud Run 函式 (第 1 代) 或一組函式
- App Engine 標準環境或 App Engine 彈性環境應用程式、應用程式中的特定服務、應用程式的特定版本,或一組服務。
- API Gateway 會透過 REST API 為您的服務提供存取權,無論服務實作方式為何,都能在所有服務中保持一致。這項功能目前為預先發布版。
支援的負載平衡器
下表列出各個 Application Load Balancer 支援的無伺服器產品。Proxy 網路負載平衡器和直通式網路負載平衡器不支援無伺服器 NEG。
無伺服器 NEG 類型 | 應用程式負載平衡器 | ||||
---|---|---|---|---|---|
區域 內部 |
跨區域 內部 |
全域 外部 |
傳統版 | 區域 外部 |
|
Cloud Run 支援 Cloud Run 和 Cloud Run 函式 (第 2 代) |
|||||
App Engine | |||||
Cloud Functions 支援 Cloud Run 函式 (第 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 函式 (第 2 代) 後端執行符合法規或合規要求的工作負載。舉例來說,如果您要求應用程式的網路設定和流量終止作業必須位於特定區域,區域性外部應用程式負載平衡器通常是遵守必要管轄區控管措施的首選。
如要瞭解如何設定區域性外部應用程式負載平衡器,並搭配無伺服器運算後端,請參閱「使用 Cloud Run 設定區域性外部應用程式負載平衡器」。
區域內部應用程式負載平衡器和跨區域內部應用程式負載平衡器
當內部應用程式負載平衡器設定為使用 Cloud Run 或 Cloud Run 函式 (第 2 代) 後端時,您可以執行下列操作:
- 為 Cloud Run 和 Cloud Run 函式 (第 2 代) 服務啟用進階流量管理功能,例如容錯植入、標頭重寫、重新導向、流量拆分等。
- 順暢地將舊版服務從 Compute Engine、GKE 或內部部署環境遷移至 Cloud Run 和 Cloud Run 函式 (第 2 代),充分利用以權重為依據的流量分配功能,逐步將流量轉移至 Cloud Run,且不會造成任何停機時間。
- 使用 VPC Service Controls 保護 Cloud Run 和 Cloud Run 函式 (第 2 代) 服務。
- 為在 Cloud Run、Cloud Run 函式 (第 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 的端點數量不得超過一個。端點會指向無伺服器應用程式或網址遮罩。負載平衡器可做為無伺服器運算應用程式的前端,並將流量代理至指定的端點。不過,如果後端服務包含位於不同地區的多個無伺服器 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 函式 (第 2 代) 資源。
每個無伺服器 NEG 可指向下列任一項目:
- 單一資源的 FQDN
- 指向位於同一個網域的多個資源的 網址遮罩
網址遮罩是網址結構定義範本,可告知無伺服器 NEG 後端如何將使用者要求對應至正確的服務。如果您為無伺服器應用程式使用自訂網域,且有多個服務在同一網域中提供服務,網址遮罩就非常實用。您可以為自訂網域使用一般網址遮罩建立 NEG,而非為每個資源建立個別的無伺服器 NEG。如需詳細資訊和範例,請參閱「網址遮罩」。
如要瞭解將無伺服器 NEG 新增為後端時的其他限制,請參閱限制。
無伺服器網路端點群組 (NEG) 的離群值偵測
異常值偵測是可選的設定,可在已連結無伺服器網路端點群組 (NEG) 的全球後端服務上啟用。異常值偵測分析功能僅適用於跨區域內部應用程式負載平衡器、全域外部應用程式負載平衡器,不適用於傳統版應用程式負載平衡器。離群值偵測分析會根據 HTTP 回應模式,找出無伺服器 NEG 的健康狀態,並將大部分新要求從不健康的資源重新導向至健康的資源,藉此降低錯誤率。如要瞭解異常值偵測演算法的運作方式和限制,請參閱以下範例。
假設有一個後端服務,其中連結了兩個無伺服器 NEG,一個位於 REGION_A
區域,另一個位於 REGION_B
區域。如果無伺服器 NEG 做為 REGION_A
區域中全域外部應用程式負載平衡器的後端,但無法回應,異常值偵測功能就會將無伺服器 NEG 視為不健康。系統會根據異常值偵測分析結果,將部分新要求傳送至 REGION_B
區域中的無伺服器網路端點群組。
根據遇到的伺服器錯誤類型,您可以使用下列任一異常值偵測方法啟用異常值偵測功能:
- 連續發生 5xx 錯誤
5xx
系列 HTTP 狀態碼屬於錯誤。 - 連續發生閘道錯誤。只有
502
、503
和504
HTTP 狀態碼才算是錯誤。
請注意,即使啟用異常值偵測功能,您仍可能會發現某些要求會傳送至不健康的資源,進而傳回 5XX 錯誤給用戶端。這是因為異常值偵測演算法的結果 (從負載平衡集區中移除端點,並將其傳回至集區) 是由負載平衡器的每個 Proxy 執行個體獨立執行。在大多數情況下,後端服務會接收多個 Proxy 例項處理的流量。因此,只有部分 Proxy 會偵測到不健康的端點並將其移除,而其他 Proxy 可能會繼續將要求傳送至相同的不健康端點。
如要進一步降低錯誤率,您可以設定更積極的異常值偵測參數。建議您將彈出門檻 (outlierDetection.baseEjectionTime
) 設為較高的值。舉例來說,我們的測試顯示,將 outlierDetection.baseEjectionTime
設為 180 秒,並維持每秒 100 次以上的持續 QPS,可使觀察到的錯誤率低於 5%。如要進一步瞭解異常值偵測 API,請參閱全球後端服務 API 說明文件中的 outlierDetection
。
如果後端服務已連結無伺服器 NEG,則不支援下列 outlierDetection
欄位:
outlierDetection.enforcingSuccessRate
outlierDetection.successRateMinimumHosts
outlierDetection.successRateRequestVolume
outlierDetection.successRateStdevFactor
如要瞭解如何設定異常值偵測功能,請參閱「設定全域外部應用程式負載平衡器,並啟用無伺服器後端:啟用異常值偵測功能」一文。
網址遮罩
無伺服器 NEG 後端可以指向單一 Cloud Run (或 App Engine 或 Cloud Run 函式,視情況而定) 資源,或是指向多個資源的網址遮罩。網址遮罩是網址配置的範本。無伺服器 NEG 會使用這個範本,將要求對應至適當的資源。
網址遮罩是可選功能,可在無伺服器應用程式包含多個 Cloud Run、Cloud Run 函式或 App Engine 資源時,更輕鬆地設定無伺服器 NEG。搭配內部應用程式負載平衡器使用的無伺服器 NEG,只能使用指向 Cloud Run 或 Cloud Run 函式 (第 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 函式資源建立在同一個專案中。如果連結的服務不在無伺服器 NEG 專案中,可能會導致要求失敗。
- 使用無伺服器 NEG 設定的負載平衡器無法偵測底層無伺服器資源是否正常運作。也就是說,即使資源傳回錯誤,負載平衡器仍會繼續將流量導向該資源。請務必先徹底測試資源的新版本,再將使用者流量導向這些資源。
後端服務的限制
下列限制適用於具有無伺服器 NEG 後端的後端服務:
- 全域外部應用程式負載平衡器使用的全域後端服務,只能在每個區域中擁有一個無伺服器 NEG。如要在單一後端服務中結合多個無伺服器 NEG,所有 NEG 都必須代表位於不同地區的功能等價部署。舉例來說,NEG 可以指向部署在不同區域的相同 Cloud Run、App Engine 或 Cloud Run 函式資源。
- 跨區域內部應用程式負載平衡器使用的全域後端服務,只能連結一個 Cloud Run 或 Cloud Run 函式 (第 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 函式 (第 2 代) 資源。
- 對於使用無伺服器 NEG 的專案,每個專案的每秒查詢次數 (QPS) 上限為 5000 QPS,適用於傳送至任何以區域性外部應用程式負載平衡器或區域性內部應用程式負載平衡器設定的無伺服器 NEG 的流量。這項限制會在專案中的所有區域外部應用程式負載平衡器和區域內部應用程式負載平衡器中加總。這不是每個負載平衡器的限制。
跨區域內部應用程式負載平衡器的限制
- 與跨區域內部應用程式負載平衡器搭配使用的無伺服器 NEG,只能指向 Cloud Run 或 Cloud Run 函式 (第 2 代) 資源。
全域外部應用程式負載平衡器的限制
本節列出使用全域外部應用程式負載平衡器設定無伺服器 NEG 時,可能會遇到的限制。
Cloud Run 的限制
- 無伺服器 NEG 的外部應用程式負載平衡器不支援 Knative 服務。
- 外部應用程式負載平衡器不支援驗證使用者對 Cloud Run 資源提出的要求。不過,您可以使用 IAP 驗證貴機構內的使用者。如要啟用 IAP,請注意 IAP 和 Cloud CDN 彼此不相容。無法在同一個後端服務中啟用。
App Engine 的限制
- App Engine 不支援多區域負載平衡。這是因為 App Engine 每個專案都需要 1 個區域。
- 如果您使用 IAP,則必須為與單一負載平衡器相關聯的所有 App Engine 服務使用相同的 OAuth 用戶端 ID。
- 要求路徑中只能有一個 IAP 政策。舉例來說,如果您已在後端服務中設定 IAP 政策,就不要再為 App Engine 應用程式設定其他 IAP 政策。
- 同時具備 App Engine 彈性環境後端和 App Engine 標準環境後端的全域外部應用程式負載平衡器,不支援跨專案服務參照。
- 建議您使用入口控管機制,讓應用程式只接收來自負載平衡器 (以及您使用的 VPC,如果有) 的要求。否則,使用者可以使用應用程式的 App Engine 網址,略過負載平衡器、Google 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 設定跨區域內部應用程式負載平衡器