COST09-BP03 動態供應資源 - AWS 建構良好的架構

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

COST09-BP03 動態供應資源

資源會按計劃進行佈建。這可以是以需求為基礎 (例如,透過自動調整規模),或是以時間為基礎,其中需求可預測,並且根據時間提供資源。這些方法可盡量減少過度佈建或佈建不足的數量。

未建立此最佳實務時的曝險等級:

實作指引

AWS 客戶有多種方式可以增加其應用程式可用的資源,並提供資源以滿足需求。其中一個選項是使用 AWS Instance Scheduler,它可自動啟動和停止 Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon Relational Database Service (Amazon RDS) 執行個體。另一個選項是使用 AWS Auto Scaling,這可讓您根據應用程式或服務的需求自動擴展運算資源。根據需求提供資源可讓您僅為自己使用的資源付費,以及在需要時啟動資源,並在不需要資源時將其終止,藉以降低成本。

AWS Instance Scheduler 可讓您在定義的時間設定 Amazon 和 Amazon RDS執行個體的停止EC2和啟動,以便您可以在一致的時間模式內滿足對相同資源的需求,例如每天使用者在早上八點存取 Amazon EC2執行個體,他們在晚上六點後不需要。此解決方案可停止非使用中的資源,並在需要時才加以啟動,藉以降低營運成本。

顯示使用 AWS 執行個體排程器進行成本最佳化的圖表。

使用 AWS 執行個體排程器進行成本最佳化。

您也可以使用 AWS Systems Manager 快速設定,透過簡單的使用者介面 (UI),輕鬆地在帳戶和區域間設定 Amazon EC2執行個體的排程。您可以使用 AWS 執行個體排程器來排程 Amazon EC2或 Amazon RDS執行個體,並且可以停止和啟動現有的執行個體。不過,您無法停止和啟動屬於 Auto Scaling 群組 (ASG) 或管理 Amazon Redshift 或 Amazon OpenSearch Service 等服務的執行個體。Auto Scaling 群組對群組中的執行個體有自己的排程,並且會建立這些執行個體。

AWS Auto Scaling 可協助您調整容量,盡可能以最低的成本維持穩定、可預測的效能,以因應持續變動的需求。它是一項完全受管且免費的服務,可擴展應用程式與 Amazon EC2執行個體和 Spot Fleets、Amazon ECS、Amazon DynamoDB 和 Amazon Aurora 整合的容量。Auto Scaling 提供自動資源探索,以協助尋找工作負載中可設定的資源,它具有內建的擴展策略以優化效能、成本或兩者之間的平衡,並提供預測擴展以協助處理定期發生的尖峰。

有多個擴展選項可用來擴展您的 Auto Scaling 群組:

  • 隨時維持目前執行個體層級

  • 手動擴展

  • 依據排程擴展

  • 依據需求擴展

  • 使用預測擴展

Auto Scaling 政策有所不同,可分類為動態和排程擴展政策。動態政策是手動或動態擴展,屬於排程或預測擴展。您可以使用擴展政策來進行動態、排程和預測擴展。您也可以使用 Amazon CloudWatch 的指標和警示來觸發工作負載的擴展事件。建議您使用啟動範本,它允許您存取最新功能和改善項目。即便使用啟動組態,也並非所有 Auto Scaling 功能都可用。例如:您無法建立同時啟動 Spot 及隨需執行個體的 Auto Scaling 群組或指定多個執行個體類型的群組。您必須使用啟動範本來設定這些功能。使用啟動範本時,建議您對每個範本進行版本控制。藉由啟動範本的版本控制,您可以建立一組完整的參數子集,之後可以重複使用子集來建立相同啟動範本的其他版本。

您可以使用 AWS Auto Scaling 或 ,AWS APIs在程式碼中使用或SDKs合併擴展。透過消除手動變更環境所需的營運成本,這可讓您降低整體工作負載成本,且變更的執行速度更快。這也可讓您隨時依據需求做出相應的工作負載資源配置。為了動態遵循此最佳實務並為組織提供資源,您應該了解 中的水平和垂直擴展 AWS 雲端,以及 Amazon EC2執行個體上執行的應用程式性質。建議讓您的雲端財務管理團隊與技術團隊相互合作,以遵循此最佳實務。

彈性負載平衡 (Elastic Load Balancing) 可跨多個資源分配需求以協助您進行擴展。使用 ASG和 Elastic Load Balancing 時,您可以透過最佳方式路由流量來管理傳入的請求,以便在 Auto Scaling 群組中不會有任何執行個體不堪負荷。請求會以循環方式散佈在目標群組的所有目標之間,而不考量容量或使用率。

典型指標可以是標準 Amazon EC2指標,例如CPU使用率、網路輸送量和 Elastic Load Balancing 觀察到的請求和回應延遲。若可行的話,您應該使用可指示客戶體驗的指標,這通常是自訂指標,可能源自您工作負載內的應用程式程式碼。為了在本文件中詳細說明如何動態滿足需求,我們將 Auto Scaling 分類為需求為主和時間為主的供應模式,並深入探討這兩種模式。

需求為主的供應:依賴幾近即時的需求狀態,充分利用雲端的彈性來供應資源,以滿足不斷變化的需求。對於需求型供應,使用 APIs 或服務功能以程式設計方式改變架構中的雲端資源量。這樣可讓您增減架構中元件的規模,在需求激增時增加資源數量以維持效能,待需求消退時減少容量以降低成本。

此圖說明需求為主的擴展政策,例如簡單/階段式擴展和目標追蹤。

需求為主的動態擴展政策

  • 簡單/階段式擴展:根據客戶手動定義的步驟,監控指標及新增/移除執行個體。

  • 目標追蹤:類似恆溫器的控制機制,可自動新增或移除執行個體,以在客戶定義的目標上維護指標。

以需求為主的方法進行建構時,請牢記兩大考量要點。第一,了解必須多迅速地佈建起新的資源。第二,了解供應與需求之間差距的大小會改變。您必須隨時因應需求的改變速度,並為資源失敗做好準備。

時間為主的供應:時間為主方法能使資源容量符合可預測或依照時間定義完善的需求。這種方法通常不依存於資源的利用率。時間為主方法能確保需要資源的特定時間有資源可用,並且因為啟動程序和系統或一致性檢查的緣故,能在毫無延遲之下提供。採用時間為主方法,您可在忙碌期提供更多資源或增加容量。

此圖說明時間為主的擴展政策,例如排程和預測調整。

時間為主的擴展政策

您可以使用排程或預測自動擴展來實作時間為主的方法。可排定工作負載於定義的時間橫向擴展或縮減 (例如在營業時段開始時),以便在使用者到來或需求增加時有資源可用。預測擴展會使用模式進行橫向擴展,而排程的擴展則使用先定義的時間進行橫向擴展。您也可以在 Auto Scaling 群組中使用屬性型執行個體類型選取 (ABS) 策略,這可讓您將執行個體需求表達為一組屬性,例如 v CPU、記憶體和儲存體。這也可讓您在發佈較新一代的執行個體類型時自動使用,並使用 Amazon EC2 Spot 執行個體存取更廣泛的容量範圍。Amazon EC2 Fleet 和 Amazon EC2 Auto Scaling 選擇並啟動符合指定屬性的執行個體,無需手動挑選執行個體類型。

您也可以利用 AWS APIs和 SDKs AWS CloudFormation ,視需要自動佈建和停用整個環境。這種方法十分適合僅在定義的營業時段或時期執行的開發或測試環境。您可以使用 APIs來擴展環境中的資源大小 (垂直擴展)。例如,可變更執行個體的大小或類別,以擴展生產工作負載。作法是將執行個體停止再啟動,選擇不同的執行個體大小或類別。此技術也可以套用至其他資源,例如 Amazon EBS Elastic Volumes,這些資源可以修改以增加大小、調整效能 (IOPS) 或使用時變更磁碟區類型。

以時間為主的方法進行建構時,請牢記兩大考量要點。首先,用量模式的一致性有多高? 第二,若是模式改變會有何影響? 您可藉由監控工作負載和使用商業智慧來提高預測的準確性。若看出用量模式有明顯變化,可調整時間以確保涵蓋。

實作步驟

  • 設定排程擴展:針對可預測的需求變更,以時間為主的擴展機制可以及時提供正確的資源數目。此外,當資源建立和設定的速度不夠快,不足以回應隨需變更時,此機制也能派上用場。透過 AWS Auto Scaling,使用工作負載分析來設定排程的擴展。若要設定以時間為基礎的排程,您可以使用排程擴展的預測擴展,根據預期或可預測的負載變更預先增加 Auto Scaling 群組中的 Amazon EC2執行個體數量。

  • 設定預測擴展:預測擴展可讓您在流量流量的每日和每週模式之前,增加 Auto Scaling 群組中的 Amazon EC2執行個體數量。如果您有定期流量尖峰和啟動耗時的應用程式,則應考慮使用預測擴展。預測擴展可在預估的負載之前初始化容量,協助您以優於單純動態擴展 (本質上是被動的) 的速度進行擴展。例如,如果使用者在營業時間開始時開始使用您的工作負載,且在營業時間結束後不使用,則預測擴展可在營業時間之前新增容量,以消除動態擴展為了回應變動的流量而產生的延遲。

  • 設定動態自動擴展:若要根據作用中的工作負載指標來設定擴展,請使用 Auto Scaling。使用分析並設定 Auto Scaling 以在正確的資源層級上啟動,並確認工作負載在所需的時間內擴展。您可以在單一 Auto Scaling 群組內啟動和自動擴展隨需執行個體和 Spot 執行個體組成的機群。除了獲得使用 Spot 執行個體的折扣之外,您還可以使用預留執行個體或 Savings Plan,以獲得定期隨需執行個體定價的折扣費率。所有這些因素組合可協助您最佳化 Amazon EC2執行個體的成本節省,並協助您取得應用程式所需的規模和效能。

資源

相關文件:

相關影片:

相關範例: