在 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% 訂單的付款。為在負載偏多時符合這項要求,您可以配置備援運算和儲存容量。但如果應用程式的負載較低,部分已配置的容量可能會閒置或未充分使用。如要移除未使用的資源,您必須監控使用率並調整容量。自動調度資源服務可協助您管理雲端容量,並維持所需的可用性層級,省去管理冗餘資源的作業負擔。當應用程式的負載增加時,自動調度資源功能會自動配置額外資源,進而提高應用程式的可用性。在負載量低的期間,自動調度資源功能會移除未使用的資源,有助於降低成本。

您可以為佈建的資源設定自動調度資源配置功能,這項功能適用於 Compute Engine 等特定 Google Cloud 服務。Cloud Run 等代管服務可自動調整容量,無需任何設定。以下列舉支援自動調整大小的 Google Cloud服務範例。請注意,這份清單僅列出部分示例。

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

負載平衡

負載平衡機制會將流量只導向可用的資源,並確保個別資源不會超載,進而提高應用程式可靠性。

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

負載平衡內部流量

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

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

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

如果後端位於單一區域,且您不需要全域負載平衡功能,可以使用區域負載平衡器,這類負載平衡器可在區域發生停機時保持彈性。

選擇負載平衡器類型時,除了考量可用性之外,還應考量其他因素,例如 TLS 終止的區域控制、效能、成本和流量類型。詳情請參閱「選擇負載平衡器」一文。

設定健康狀態檢查

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

頻率限制

有時,應用程式可能會經歷快速或持續性的負載增加。如果應用程式並未設計用來處理增加的負載量,應用程式或其使用的資源可能會失敗,導致應用程式無法使用。負載增加可能是由惡意要求造成,例如以網路為基礎的分散式阻斷服務 (DDoS) 攻擊。負載量突然激增也可能因其他原因而發生,例如用戶端軟體的設定錯誤。為確保應用程式能夠處理過多負載,請考慮採用適當的速率限制機制。例如,您可以為 Google Cloud 服務可接收的 API 要求數量設定配額。

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

網路服務級別

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