本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
COST09-BP03 動態供應資源
資源會按計劃進行佈建。這可以是以需求為基礎 (例如,透過自動調整規模),或是以時間為基礎,其中需求可預測,並且根據時間提供資源。這些方法可盡量減少過度佈建或佈建不足的數量。
未建立此最佳實務時的曝險等級:低
實作指引
AWS 客戶有多種方式可以增加其應用程式可用的資源,並提供資源以滿足需求。其中一個選項是使用 AWS Instance Scheduler,它可自動啟動和停止 Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon Relational Database Service (Amazon RDS) 執行個體。另一個選項是使用 AWS Auto Scaling,這可讓您根據應用程式或服務的需求自動擴展運算資源。根據需求提供資源可讓您僅為自己使用的資源付費,以及在需要時啟動資源,並在不需要資源時將其終止,藉以降低成本。
AWS Instance Scheduler
您也可以使用 AWS Systems Manager 快速設定,透過簡單的使用者介面 (UI),輕鬆地在帳戶和區域間設定 Amazon EC2執行個體的排程。您可以使用 AWS 執行個體排程器來排程 Amazon EC2或 Amazon RDS執行個體,並且可以停止和啟動現有的執行個體。不過,您無法停止和啟動屬於 Auto Scaling 群組 (ASG) 或管理 Amazon Redshift 或 Amazon OpenSearch Service 等服務的執行個體。Auto Scaling 群組對群組中的執行個體有自己的排程,並且會建立這些執行個體。
AWS Auto Scaling
有多個擴展選項可用來擴展您的 Auto Scaling 群組:
-
隨時維持目前執行個體層級
-
手動擴展
-
依據排程擴展
-
依據需求擴展
-
使用預測擴展
Auto Scaling 政策有所不同,可分類為動態和排程擴展政策。動態政策是手動或動態擴展,屬於排程或預測擴展。您可以使用擴展政策來進行動態、排程和預測擴展。您也可以使用 Amazon CloudWatch
您可以使用 AWS Auto Scaling 或 ,AWS APIs在程式碼中使用或SDKs
彈性負載平衡 (Elastic Load Balancing)
典型指標可以是標準 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 Auto Scaling,使用工作負載分析來設定排程的擴展。若要設定以時間為基礎的排程,您可以使用排程擴展的預測擴展,根據預期或可預測的負載變更預先增加 Auto Scaling 群組中的 Amazon EC2執行個體數量。
-
設定預測擴展:預測擴展可讓您在流量流量的每日和每週模式之前,增加 Auto Scaling 群組中的 Amazon EC2執行個體數量。如果您有定期流量尖峰和啟動耗時的應用程式,則應考慮使用預測擴展。預測擴展可在預估的負載之前初始化容量,協助您以優於單純動態擴展 (本質上是被動的) 的速度進行擴展。例如,如果使用者在營業時間開始時開始使用您的工作負載,且在營業時間結束後不使用,則預測擴展可在營業時間之前新增容量,以消除動態擴展為了回應變動的流量而產生的延遲。
-
設定動態自動擴展:若要根據作用中的工作負載指標來設定擴展,請使用 Auto Scaling。使用分析並設定 Auto Scaling 以在正確的資源層級上啟動,並確認工作負載在所需的時間內擴展。您可以在單一 Auto Scaling 群組內啟動和自動擴展隨需執行個體和 Spot 執行個體組成的機群。除了獲得使用 Spot 執行個體的折扣之外,您還可以使用預留執行個體或 Savings Plan,以獲得定期隨需執行個體定價的折扣費率。所有這些因素組合可協助您最佳化 Amazon EC2執行個體的成本節省,並協助您取得應用程式所需的規模和效能。
資源
相關文件:
相關影片:
相關範例: