

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

# Amazon EC2 Auto Scaling 政策的步進和簡易擴展政策
<a name="as-scaling-simple-step"></a>

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

如果您使用執行個體[權重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)，則會根據執行個體或容量單位來測量 Auto Scaling 群組容量。此外，所需容量和目前容量之間有差異。
+ 所需容量 – 您想要在 群組中擁有的執行個體 （或容量單位） 數量。所需的容量可以手動調整，也可以使用擴展政策自動調整。
+ 目前容量 – 群組中已通過暖機和冷卻期間，且正在執行並準備好使用的執行個體 （或容量單位） 數量。

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

強烈建議使用目標追蹤擴展政策，根據平均 CPU 使用率或每個目標的平均請求計數等指標進行擴展。容量增加時減少和容量減少時增加的指標，可用於使用目標追蹤依比例擴增或縮減執行個體數量。這有助於確保 Amazon EC2 Auto Scaling 緊密地遵循應用程式的需求曲線。如需詳細資訊，請參閱[目標追蹤擴展政策](as-scaling-target-tracking.md)。

**Contents**
+ [步進擴展政策的運作方式](#step-scaling-how-it-works)
+ [步進擴展的步進調整](#as-scaling-steps)
+ [擴展調整類型](#as-scaling-adjustment)
+ [執行個體暖機期](#as-step-scaling-warmup)
+ [考量事項](#step-scaling-considerations)
+ [建立橫向擴展的步驟擴展政策](step-scaling-create-scale-out-policy.md)
+ [建立向內擴展的步驟擴展政策](step-scaling-create-scale-in-policy.md)
+ [簡易擴展政策](simple-scaling-policies.md)

## 步進擴展政策的運作方式
<a name="step-scaling-how-it-works"></a>

若要使用步驟擴展，請先建立 CloudWatch 警示，以監控 Auto Scaling 群組的指標。定義指標、閾值和評估流量是否達到警示閾值的時段數。然後，建立步驟擴展政策，定義如何在超過警示閾值時擴展您的 群組。您可以針對擴展調整類型使用 Auto Scaling 群組或容量單位目前容量的百分比。如需詳細資訊，請參閱[擴展調整類型](#as-scaling-adjustment)。

在政策中新增步進調整內容。您可以根據流量達到警示閾值的程度，定義不同的步進調整幅度。例如：
+ 如果警示指標達到 60%，則橫向擴展 10 個執行個體
+ 如果警示指標達到 75%，則橫向擴展 30 個執行個體
+ 如果警示指標達到 85%，則橫向擴展 40 個執行個體

在指定的評估期間數目內違反警示閾值時，Amazon EC2 Auto Scaling 會套用政策中定義的步驟調整。警示狀態恢復 `OK` 後，才能依其他達標警示事件繼續調整。

每個執行個體都有一個暖機期，以防止擴展活動對短時間內發生的變更太過反應。您可以選擇性地設定擴展政策的暖機期。不過，我們建議您使用預設執行個體暖機期，以便在暖機期變更時更輕鬆地更新所有擴展政策。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

簡單擴展政策類似於步進擴展政策，但它們是以單一擴展調整為基礎，每個擴展活動之間都有冷卻時間。如需詳細資訊，請參閱[簡易擴展政策](simple-scaling-policies.md)。

## 步進擴展的步進調整
<a name="as-scaling-steps"></a>

建立步進擴展政策時，您可以指定一或多個步進調整，這些調整會根據警示違規的程度自動動態調整執行個體數量。每項步進調整可指定下列項目：
+ 指標值下限
+ 指標值上限
+ 要擴展的數量，會以擴展調整類型為依據 

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 管理主控台，您可以將上限和下限指定為絕對值。如果您使用 AWS CLI 或 開發套件，您可以指定相對於違規閾值的上限和下限。
+ 步進調整的範圍不得重疊或有間隙。
+ 僅其中一項步進調整的下限可為空值 (負無限大)。若某項步進調整的下限為負值，則必須有一項步進調整的下限為空值。
+ 僅其中一項步進調整的上限可為空值 (正無限大)。若某項步進調整的上限為正值，則必須有一項步進調整的上限為空值。
+ 同一項步進調整的上限及下限不得皆為空值。
+ 如果指標值高於違規閾值，則含下限而不含上限。如果指標值低於違規閾值，則不含下限而含上限。

## 擴展調整類型
<a name="as-scaling-adjustment"></a>

您可以根據選擇的擴展調整類型，定義執行最佳擴展動作的擴展政策。您可以將調整類型指定為 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 執行個體。

當您使用[執行個體權重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)時，將`MinAdjustmentMagnitude`參數設定為非零值的效果會變更。此值以容量單位表示。若要設定要擴展的執行個體數量下限，請將此參數設為至少與最大執行個體權重一樣大的值。

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

## 執行個體暖機期
<a name="as-step-scaling-warmup"></a>

對於步進擴展，您可以選擇性指定新啟動的執行個體暖機所需的秒數。在指定的暖機時間結束之前，執行個體不會計入 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 的相同步進調整範圍，則不會採取任何擴展動作。

**預設值**  
如果未設定任何值，擴展政策將使用預設值，這是為群組定義之[預設執行個體暖機](ec2-auto-scaling-default-instance-warmup.md)期的值。如果預設執行個體暖機期為 null，則會回到[預設冷卻時間](ec2-auto-scaling-scaling-cooldowns.md#set-default-cooldown)的值。

## 考量事項
<a name="step-scaling-considerations"></a>

使用步進和簡易擴展政策時，下列考量適用：
+ 考慮您是否能夠準確地預測應用程式上的步進調整，以便使用步進擴展。如果您的擴展指標可按比例提高或降低可擴展目標容量，我們建議您改用目標追蹤擴展政策。您仍然可以選擇使用步進擴展作為其他政策，以進行更進階的設定。例如，您可以設定使用率達到特定層級時更積極的回應。
+ 請務必在橫向擴展閾值和縮減閾值之間選擇足夠的邊際，以防止震盪。振盪不穩是指向內縮減和水平擴展無限循環的現象。也就是說，如果採取擴展動作，指標值將會改變，並反向展開另一次擴展動作。