在 Google Cloud 中管理工作負載的流量和負載

Last reviewed 2024-11-20 UTC

在雲端分散式資源上執行應用程式堆疊時,網路流量必須有效率地路由至多個位置的可用資源。本節的Google Cloud 基礎架構可靠性指南,說明可用於改善雲端工作負載可靠性的流量和負載管理技術。

處理能力規劃

為確保在 Google Cloud 中部署的應用程式有足夠的基礎架構資源,您必須估算所需容量,並管理已部署的容量。本節提供相關準則,協助您規劃及管理容量。

預測應用程式負載

預測負載時,請考量使用者人數和應用程式可能收到要求的速率等因素。在預測中,請考量歷來負載趨勢、季節性變化、特殊活動期間的負載尖峰,以及業務變化 (例如擴展至新地域) 所帶來的成長。

估算容量需求

根據部署架構,並考量應用程式的效能和可靠性目標,預估處理預期負載所需的Google Cloud 資源數量。舉例來說,如果您打算使用 Compute Engine 代管執行個體群組 (MIG),請決定每個 MIG 的大小、VM 機器類型,以及永久磁碟的數量、類型和大小。您可以使用Google Cloud Pricing Calculator 估算 Google Cloud 資源的費用。

規劃足夠的備援

估算容量需求時,請為應用程式堆疊的每個元件提供足夠的備援。舉例來說,如要達到 N+1 備援,應用程式堆疊中的每個元件都必須至少有一個備援元件,超出處理預測負載所需的最低數量。

為應用程式執行基準測試

執行負載測試,判斷應用程式的資源效率。 資源效率是指應用程式的負載與應用程式耗用的資源 (例如 CPU 和記憶體) 之間的關係。應用程式的資源效率可能會在負載異常高時降低,且效率可能會隨時間改變。在正常和尖峰負載條件下執行工作負載測試,並定期重複執行基準測試。

管理配額

Google Cloud 服務配額是專案的限制,可協助您控管雲端資源用量。配額分為兩種:資源配額是指您可建立的資源上限,例如區域中的 Google Kubernetes Engine (GKE) 叢集數量。頻率配額會限制在特定時間內可傳送至服務的 API 要求數。配額可以是可用區、區域或全域配額。請查看您打算在專案中使用的服務,目前的資源配額和 API 速率配額。請確認配額足以滿足所需容量。如有需要,您可以申請提高配額值

預留運算能力

如要確保在必要時有可用的 Compute Engine 資源容量,可以建立預留項目。預留機制可確保在特定區域中,為您選擇的機型預留指定數量的 VM 容量。預留項目可專供特定專案使用,也可供多個專案共用。如要進一步瞭解預留項目,請參閱「選擇預留項目類型」。

監控使用率,並定期重新評估需求

部署必要資源後,請監控容量使用率。您或許可以移除閒置資源,藉此節省成本。定期重新評估容量需求,並考量應用程式行為、效能和可靠性目標、使用者負載,以及 IT 預算的所有變更。

自動調度資源

在分散於多個位置的資源上執行應用程式時,即使其中一個位置發生中斷,應用程式仍可正常運作。此外,冗餘有助於確保使用者體驗一致的應用程式行為。舉例來說,如果負載突然增加,多餘的資源可確保應用程式繼續以可預測的效能運作。但如果應用程式負載較低,冗餘可能會導致雲端資源使用效率不彰。

舉例來說,電子商務應用程式的購物車元件可能需要在訂單確認後 200 毫秒內,處理 99.9% 的訂單付款。如要在負載偏多時滿足這項需求,您可能需要佈建多餘的運算和儲存容量。但如果應用程式的負載量較低,部分佈建容量可能仍未使用或未充分利用。如要移除未使用的資源,您需要監控使用率並調整容量。自動調度資源服務可協助您管理雲端容量,並維持所需的可用性等級,不必管理多餘資源,省去作業負擔。當應用程式負載增加時,自動調度資源功能會自動佈建額外資源,有助於提高應用程式的可用性。在負載較低的期間,自動調度資源功能會移除未使用的資源,有助於降低費用。

某些 Google Cloud 服務 (例如 Compute Engine) 可讓您為佈建的資源設定自動調度。Cloud Run 等代管服務可自動調整容量,您不必進行任何設定。以下列舉支援自動調整規模的服務。 Google Cloud請注意,這份清單僅列出部分示例。

  • Compute Engine:您可以透過 MIG 自動調整部署在 Compute Engine VM 上的無狀態應用程式,以配合目前的負載量。詳情請參閱自動調度執行個體群組資源
  • GKE:您可以設定 GKE 叢集,自動調整節點集區大小,以符合目前的負載。詳情請參閱叢集自動配置器。如果您在 Autopilot 模式中佈建 GKE 叢集,GKE 會根據流量自動調整節點和工作負載。
  • Cloud Run:您在 Cloud Run 中佈建的服務會自動擴充,以達到處理目前負載所需的容器執行個體數量。應用程式沒有負載時,服務會自動將容器執行個體數量縮減為零。詳情請參閱「關於容器執行個體自動調度」。
  • Cloud Run 函式:系統會將對函式的每個要求指派給函式執行個體。如果傳入要求數量超過現有函式執行個體數量,Cloud Run functions 會自動啟動新的函式執行個體。詳情請參閱 Cloud Run functions 執行環境
  • Bigtable:在 Bigtable 執行個體中建立叢集時,您可以將叢集設定為自動調整規模。Bigtable 會監控 CPU 和儲存空間負載,並調整叢集中的節點數量,以維持您指定的目標使用率。詳情請參閱「Bigtable 自動調度資源」。
  • Dataproc Serverless:提交 Apache Spark 批次工作負載時,Dataproc Serverless 會動態調整工作負載資源 (例如執行器數量),以有效率地執行工作負載。詳情請參閱「Dataproc Serverless for Spark 自動調度資源」。

負載平衡

負載平衡機制會將流量只導向可用資源,並確保個別資源不會過度負載,藉此提高應用程式的穩定性。

為雲端部署選擇及設定負載平衡器時,請考量下列與可靠性相關的設計建議。

平衡內部流量

設定應用程式堆疊層級之間的流量負載平衡,而不只是外部用戶端與應用程式之間的流量。舉例來說,在 3 層式網頁應用程式堆疊中,您可以使用內部負載平衡器,在網頁和應用程式層之間建立可靠的通訊。

選擇合適的負載平衡器類型

如要對分散在多個區域的應用程式進行外部流量負載平衡,可以使用全域負載平衡器或多個區域負載平衡器。詳情請參閱「多區域部署的全域負載平衡優點和風險」。

如果後端位於單一區域,且您不需要全域負載平衡功能,可以使用區域性負載平衡器,這類負載平衡器可因應可用區中斷情形。

選擇負載平衡器類型時,除了可用性之外,也請考量其他因素,例如對 TLS 終止的地理位置控制、效能、成本和流量類型。詳情請參閱「選擇負載平衡器」。

設定健康狀態檢查

自動調度資源服務可確保應用程式有足夠的基礎架構資源來處理目前的負載。但即使有足夠的基礎架構資源,應用程式或部分內容仍可能無法回應。舉例來說,主機應用程式的所有 VM 可能都處於 RUNNING 狀態。但部署在部分 VM 上的應用程式軟體可能已當機。負載平衡健康狀態檢查可確保負載平衡器只將應用程式流量轉送至有回應的後端。如果後端是 MIG,請考慮設定額外的健康狀態檢查層,自動修復無法使用的 VM。為 MIG 設定自動修復功能後,系統會主動刪除無法使用的 VM,並建立新的 VM。

頻率限制

有時應用程式的負載可能會快速或持續增加。如果應用程式並未設計為處理增加的負載,應用程式或其使用的資源可能會失敗,導致應用程式無法使用。負載增加可能是惡意要求所致,例如網路型分散式阻斷服務 (DDoS) 攻擊。此外,用戶端軟體設定錯誤等其他原因,也可能導致負載突然暴增。為確保應用程式能處理過度負載,請考慮套用適當的速率限制機制。舉例來說,您可以為 Google Cloud 服務可接收的 API 要求數量設定配額。

速率限制技術也有助於最佳化雲端基礎架構的成本。舉例來說,您可以為特定資源設定專案層級配額,限制專案中這些資源的帳單費用。

網路服務級別

Google Cloud 網路服務級別可讓您將網際網路上系統與工作負載之間的連線最佳化。Google Cloud 如果應用程式服務的對象遍布全球,且後端位於多個區域,請選擇進階層級。來自網際網路的流量會從最接近傳送系統的 PoP 進入高效能 Google 網路。在 Google 網路中,流量會從進入 PoP 轉送至適當的 Google Cloud 資源,例如 Compute Engine VM。傳出流量透過 Google 網路傳送,從最接近目的地的 PoP 出去。這種轉送方法可減少使用者和最接近他們的 PoP 之間的網路躍點數量,進而提升使用者對可用性的觀感。