Amazon EC2 Auto Scaling 政策的步進和簡易擴展政策 - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling 政策的步進和簡易擴展政策

步驟擴展和簡單擴展政策會根據 CloudWatch 警示,以預先定義的增量調整 Auto Scaling 群組的容量。您可以定義個別的擴展政策,在流量達到警示閾值時擴增規模 (增加容量) 和縮減規模 (減少容量)。

使用步長縮放和簡單擴展,您可以建立和管理叫用擴展程序的 CloudWatch 警示。違反警示時,Amazon EC2 Auto Scaling 會啟動與該警示相關聯的擴展政策。

強烈建議您使用目標追蹤擴展政策來擴展指標,例如平均 CPU 使用率或每個目標的平均要求計數。容量增加時減少和容量減少時增加的指標,可用於使用目標追蹤依比例擴增或縮減執行個體數量。這有助於確保 Amazon EC2 Auto Scaling 緊密地遵循應用程式的需求曲線。如需詳細資訊,請參閱 目標追蹤擴展政策

步進擴展政策的運作方式

若要使用步進縮放,您必須先建立 CloudWatch 警示來監控 Auto Scaling 群組的量度。定義指標、閾值和評估流量是否達到警示閾值的時段數。然後,建立一個步驟調整政策,以定義在超出警示閾值時如何調整群組的規模。

在政策中新增步進調整內容。您可以根據流量達到警示閾值的程度,定義不同的步進調整幅度。例如:

  • 如果警示量度達到 60%,則向外擴充 10 個執行個體

  • 如果警示量度達到 75%,則向外擴充 30 個執行個體

  • 如果警示量度達到 85%,則向外擴充 40 個執行個體

當違反指定評估期數的警示臨界值時,Amazon EC2 Auto Scaling 將套用政策中定義的步驟調整。警示狀態恢復 OK 後,才能依其他達標警示事件繼續調整。

每個執行個體都有一個預熱期,以防止縮放活動因短時間內發生的變更而過於反應。您可以選擇性地設定擴展政策的暖機期間。不過,我們建議您使用預設的執行個體暖機,以便在暖機時間變更時更輕鬆地更新所有擴展政策。如需詳細資訊,請參閱 設定 Auto Scaling 群組的預設執行個體暖機期

簡單的擴展政策與步驟擴展政策類似,不同之處在於它們是基於單個縮放調整,並且在每個擴展活動之間都有一段冷卻時間。如需詳細資訊,請參閱 簡易擴展政策

步進擴展的步進調整

建立步進擴展政策時,您可以指定一或多個步進調整,這些調整會根據警示違規的程度自動動態調整執行個體數量。每項步進調整可指定下列項目:

  • 指標值下限

  • 指標值上限

  • 要擴展的數量,會以擴展調整類型為依據

CloudWatch 根據與警示相關聯的指標統計資料彙總量度資 CloudWatch 料點。超出警示閾值時,會呼叫適當的擴展政策。Amazon EC2 Auto Scaling 會將彙總類型套用至來自 CloudWatch (與原始指標資料相反) 的最新指標資料點。它會將彙總指標值與步進調整定義的上限和下限進行比較,以決定要執行哪一項步進調整。

您可以指定相對於違規閾值的上限及下限。例如,假設您在指標高於 50% 時發出 CloudWatch 警示和向外延展政策。當流量低於 50% 指標時,系統發出第二個警示,並執行縮減政策。您對每個原則進行了一組步驟調整,調整類型為 PercentChangeInCapacity (或主控台中的群組百分比):

範例:擴增政策的步進調整
下限 上限 調整

0

10

0

10

20

10

20

30

範例:縮減政策的步進調整
下限 上限 調整

-10

0

0

-20

-10

-10

null

-20

-30

這會建立以下擴展組態。

Metric value -infinity 30% 40% 60% 70% infinity ----------------------------------------------------------------------- -30% | -10% | Unchanged | +10% | +30% -----------------------------------------------------------------------

現在,假設您在具有目前容量和所需容量為 10 的 Auto Scaling 群組上使用此擴展配置。下列幾點摘要說明擴展組態相對於所需容量和目前群組容量的行為:

  • 當彙總指標值大於 40 且小於 60 時,將維持所需的容量和目前的容量。

  • 如果指標值達到 60,根據擴增政策的第二項步進調整 (增加 10 的執行個體的 10%),群組所需的容量會增加 1 的執行個體而達到 11 個執行個體。在新執行個體執行中且其指定的暖機時間已過期之後,群組目前的容量就會增加到 11 個執行個體。如果指標值在容量增加後仍增加到 70,則群組的所需容量會再增加 3 個執行個體,達到 14 個執行個體。這是根據擴增政策的第三步調整 (增加 11 個執行個體的 30%,即 3.3 個執行個體,無條件捨去為 3 個執行個體)。

  • 如果指標值為 40,根據縮減政策的第二項步進調整 (移除 14 個執行個體的 10%,即 1.4 個執行個體,無條件捨入到 1 個執行個體),群組所需容量會減少 1 個執行個體而變成 13 個執行個體。如果指標值在容量減少後仍降至 30,則群組的所需容量會再減少 3 個執行個體,變成 10 個執行個體。這是根據縮減政策的第三步調整 (減去 13 個執行個體的 30%,即 3.9 個執行個體,無條件捨去為 3 個執行個體)。

當您為擴展政策指定步進調整時,請注意下列事項:

  • 如果使用 AWS Management Console,請將上限和下限指定為絕對值。如果您使用 AWS CLI 或 SDK,則指定相對於違規閾值的上限和下限。

  • 步進調整的範圍不得重疊或有間隙。

  • 僅其中一項步進調整的下限可為空值 (負無限大)。若某項步進調整的下限為負值,則必須有一項步進調整的下限為空值。

  • 僅其中一項步進調整的上限可為空值 (正無限大)。若某項步進調整的上限為正值,則必須有一項步進調整的上限為空值。

  • 同一項步進調整的上限及下限不得皆為空值。

  • 如果指標值高於違規閾值,則含下限而不含上限。如果指標值低於違規閾值,則不含下限而含上限。

擴展調整類型

您可以根據選擇的擴展調整類型,定義執行最佳擴展動作的擴展政策。您可以將調整類型指定為 Auto Scaling 群組的目前容量百分比或容量單位。一般而言,容量單位代表一個執行個體,除非您使用執行個體權重功能。

Amazon EC2 Auto Scaling 支援以下擴展和簡易擴展的調整類型:

  • ChangeInCapacity:依照指定的數值,增加或減少群組目前的容量。正值即增加容量,負調整值則會減少容量。例如:如果群組目前的容量為 3 且調整值為 5,執行此政策時,會將容量增加 5 個容量單位,總共 8 個容量單位。

  • ExactCapacity:將群組的目前容量變更為指定的數值。此調整類型應指定非負值。例如:如果群組目前的容量為 3 且調整值為 5,執行此政策時,會將容量變更為 5 個容量單位。

  • PercentChangeInCapacity:依照指定的百分比,增加或減少群組目前的容量。正值即增加容量,負值則減少容量。例如,如果目前的容量為 10 且調整值為 10%,執行此政策時,會將容量增加 1 個容量單位,總共 11 個容量單位。

    注意

    若結果值不是整數,會用無條件捨去計算之,如下所示:

    • 大於 1 的值無條件捨去取整。例如,12.7 捨入到 12

    • 0 至 1 之間的值捨入到 1。例如,.67 捨入到 1

    • 0 至 -1 之間的值捨入到 -1。例如,-.58 捨入到 -1

    • 小於 -1 的值無條件進位取整。例如,-6.67 捨入到 -6

透過 PercentChangeInCapacity,您也可以使用 MinAdjustmentMagnitude 參數來指定要擴展之執行個體的數量下限。例如,假設您建立了一個增加 25% 的政策,並指定最小擴展量為 2 個執行個體。如果您有一個 Auto Scaling 群組具有 4 個執行個體和已執行的擴展政策,4 個執行個體的 25% 即 1 個執行個體。不過,由於您指定最小擴展量為 2,所以會增加 2 執行個體。

使用例證權重時,將MinAdjustmentMagnitude參數設定為非零值的效果會發生變更。此值以容量單位表示。若要設定要擴展的執行個體數量下限,請將此參數設為至少與最大執行個體權重一樣大的值。

如果您使用執行個體權重,請記住,Auto Scaling 群組目前的容量可能會視需要超過所需的容量。如果要減少的絕對數字,或要減少的百分比數量小於目前容量與所需容量之間的差異,則不會執行任何擴展動作。如果檢視超出警示閾值時擴展政策的結果,您必須將這些行為列入考量。例如,假設所需的容量為 30,而目前的容量為 32。超出警示閾值時,如果擴展政策將所需的容量減少 1,則不會採取任何擴展動作。

執行個體暖機期

對於步進擴展,您可以選擇性指定新啟動的執行個體暖機所需的秒數。在指定的預熱時間過期之前,執行個體不會計入 Auto Scaling 群組的彙總 EC2 執行個體指標。

雖然執行個體處於預熱期間,但只有在未預熱的執行個體的指標值大於政策的警示高閾值時,您的擴展政策才會向外擴展。

如果群組再次水平擴展,則仍在暖機的執行個體將計為下次水平擴展活動所需的容量一部分。因此,多個警示違規落於相同步進調整範圍,促使單一擴展活動。這種做法的目的是連續的向外擴展 (但並非過度)。

舉例來說,假設您使用兩個步驟建立政策。第一步,當指標值達到 60 時,增加 10%;第二步,當指標值達到 70% 時,增加 30%。Auto Scaling 群組的所需容量和目前容量均為 10。當彙總指標值小於 60 時,所需容量和目前容量保持不變。假設指標值達到 60,因此新增 1 個執行個體 (10 個執行個體的 10%)。接著指標值達到 62,同時新的執行個體仍處於暖機狀態。擴展政策會根據目前容量 (仍為 10) 來計算新的所需容量。不過,群組的所需容量已經增加至 11 個執行個體,所以擴展政策不會進一步增加所需容量。如果指標值為 70,同時新執行個體仍處於預熱狀態,則我們應該新增 3 個執行個體 (10 個執行個體的 30%)。不過,群組所需的容量已經為 11,所以我們只新增 2 個執行個體,適用於新所需的容量為 13 個執行個體。

在進行水平擴展活動時,透過擴展政策啟動的所有縮減活動都會遭到封鎖,直到執行個體完成暖機。當執行個體完成暖機時,如果發生縮減事件,那麼在計算新的所需容量時,目前正在終止過程中的任何執行個體都會計入群組的目前容量。所以,我們不會從 Auto Scaling 群組移除超過必要數量的執行個體。舉例來說,執行個體正在終止時,如果發生警示時超出將所需容量減少 1 的相同步進調整範圍,則不會採取任何擴展動作。

預設值

如果未設定任何值,則資源調度政策將使用預設值,這是為群組定義的預設執行個體暖機值。如果預設執行個體預熱為 null,則會回復為預設冷卻時間的值。

考量事項

使用步進和簡易擴展政策時,下列考量適用:

  • 考慮您是否能夠準確地預測應用程式上的步進調整,以便使用步進擴展。如果您的擴展指標可按比例提高或降低可擴展目標容量,我們建議您改用目標追蹤擴展政策。您仍然可以選擇使用步進擴展作為其他政策,以進行更進階的設定。例如,您可以設定使用率達到特定層級時更積極的回應。

  • 請務必在橫向擴展閾值和縮減閾值之間選擇足夠的邊際,以防止震盪。振盪不穩是指向內縮減和水平擴展無限循環的現象。也就是說,如果採取擴展動作,指標值將會改變,並反向展開另一次擴展動作。