

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

# 設定 Amazon EC2 Auto Scaling 的終止政策
<a name="ec2-auto-scaling-termination-policies"></a>

終止政策提供 Amazon EC2 Auto Scaling 依特定順序終止執行個體所遵循的條件。根據預設，Amazon EC2 Auto Scaling 會使用終止政策，其設計旨在先終止使用過時組態的執行個體。您可以變更終止政策，以控制哪些執行個體最需要先終止。

當 Amazon EC2 Auto Scaling 終止執行個體時，它會嘗試在為 Auto Scaling 群組啟用的可用區域之間維持平衡。維持區域平衡優先於終止政策。如果一個可用區域具有比其他可用區域更多的執行個體，Amazon EC2 Auto Scaling 會先將終止政策套用至不平衡的區域。如果可用區域是平衡的，則會在所有區域中套用終止政策。

**Topics**
+ [預設終止政策的運作方式](#default-termination-policy)
+ [預設終止政策和混合執行個體群組](#default-termination-policy-mixed-instances-groups)
+ [預先定義的終止政策](#predefined-termination-policies)
+ [變更 Auto Scaling 群組的終止政策](custom-termination-policy.md)

**注意**  
Amazon EC2 Auto Scaling 只會將終止政策套用至 Auto Scaling 群組認為運作狀態不佳的執行個體。因此，Auto Scaling 運作狀態檢查標示為運作狀態不佳的執行個體將略過終止政策評估。  
如需詳細資訊，請參閱[設計您的應用程式以正常處理執行個體終止](gracefully-handle-instance-termination.md)。

## 預設終止政策的運作方式
<a name="default-termination-policy"></a>

當 Amazon EC2 Auto Scaling 需要終止執行個體時，它首先會識別哪個可用區域 （或區域） 具有最多執行個體，以及至少一個不受縮減保護的執行個體。然後，它會繼續評估已識別可用區域內未受保護的執行個體，如下所示：

**使用過時組態的執行個體**
+ **對於使用啟動範本的群組** – 判斷是否有任何執行個體使用過時的組態，依此順序排定優先順序：

  1. 首先，檢查使用啟動組態啟動的執行個體。

  1. 然後，檢查使用不同啟動範本而非目前啟動範本啟動的執行個體。

  1. 最後，使用最新版本的目前啟動範本來檢查執行個體。
+ **對於使用啟動組態的群組** – 判斷是否有任何執行個體使用最舊的啟動組態。

如果找不到具有過時組態的執行個體，或者有多個執行個體可供選擇，Amazon EC2 Auto Scaling 會考慮下一個接近下一個計費小時的執行個體條件。

**接近下一個計費小時的執行個體**  
判斷符合先前條件的任何執行個體是否最接近下一個計費小時。如果多個執行個體同樣關閉，請隨機終止一個執行個體。這可協助您最大限度地使用每小時計費的執行個體。不過，大多數 EC2 用量現在是每秒計費，因此此最佳化提供較少的好處。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)。

下列流程圖說明預設終止政策對使用啟動範本的群組的運作方式。

![顯示 Auto Scaling 群組如何使用預設終止政策來終止執行個體的流程圖。](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/images/termination-policy-default-flowchart-diagram.png)


## 預設終止政策和混合執行個體群組
<a name="default-termination-policy-mixed-instances-groups"></a>

Amazon EC2 Auto Scaling 會在終止[混合執行個體群組中的執行個體](ec2-auto-scaling-mixed-instances-groups.md)時套用其他條件。

當 Amazon EC2 Auto Scaling 需要終止執行個體時，它首先會根據群組的設定，識別應該終止哪個購買選項 (Spot 或隨需）。這可確保群組隨著時間的推移向 Spot 和隨需執行個體的指定比率。

然後，它會在每個可用區域內獨立套用終止政策。它決定要在哪個 Spot 或隨需執行個體中終止可用區域，以保持可用區域平衡。相同的邏輯適用於具有為執行個體類型定義權重的混合執行個體群組。

在每個區域中，預設終止政策的運作方式如下，以判斷識別的購買選項中可以終止哪些未受保護的執行個體：

1. 判斷是否可以終止任何執行個體，以改善與 Auto Scaling 群組指定[配置策略](allocation-strategies.md)的一致性。如果未識別用於最佳化的執行個體，或者有多個執行個體可供選擇，則評估會繼續進行。

1. 判斷是否有任何執行個體使用過時的組態，並依此順序排定優先順序：

   1. 首先，檢查使用啟動組態啟動的執行個體。

   1. 然後，檢查使用不同啟動範本而非目前啟動範本啟動的執行個體。

   1. 最後，使用最新版本的目前啟動範本來檢查執行個體。

   如果找不到具有過時組態的執行個體，或者有多個執行個體可供選擇，則評估會繼續進行。

1. 判斷是否有任何執行個體最接近下一個計費小時。如果多個執行個體同樣接近，請隨機選擇一個執行個體。

## 預先定義的終止政策
<a name="predefined-termination-policies"></a>

您可以從下列預先定義的終止政策中選擇：
+ **`Default`** – 根據預設終止政策終止執行個體。
+ **`AllocationStrategy`** – 終止 Auto Scaling 群組中的執行個體，使剩餘的執行個體符合正在終止之執行個體類型的配置策略 (Spot 執行個體或隨需執行個體）。當您偏好使用的執行個體類型變更時，此政策非常有用。如果 Spot 配置策略是 `lowest-price`，您可以逐步重新平衡 Spot 執行個體在 N 個最低價 Spot 集區中的分佈。如果 Spot 配置策略是 `capacity-optimized`，您可以逐步重新平衡 Spot 執行個體在有更多可用 Spot 容量的 Spot 集區中的分佈。您也可以使用優先順序較高類型的隨需執行個體逐步取代優先順序較低類型的隨需執行個體。
+ **`OldestLaunchTemplate`** – 終止具有最舊啟動範本的執行個體。使用此政策時，使用非最新啟動範本的執行個體會先被終止，然後是使用目前啟動範本最舊版本的執行個體。當您更新群組，並從先前的組態中淘汰執行個體時，此政策非常有用。
+ **`OldestLaunchConfiguration`** – 終止具有最舊啟動組態的執行個體。當您更新群組，並從先前的組態中淘汰執行個體時，此政策非常有用。使用此政策時，使用非最新啟動組態的執行個體會先被終止。
+ **`ClosestToNextInstanceHour`** – 終止最接近下一個計費小時的執行個體。此政策有助於充分利用您每小時計費的執行個體。
+ **`NewestInstance`** – 終止群組中最新的執行個體。此政策非常實用，當您測試新的啟動組態時，但又不想讓在生產環境中。
+ **`OldestInstance`** – 終止群組中最舊的執行個體。當您將 Auto Scaling 群組中的執行個體升級為新的 EC2 執行個體類型時，此選項非常實用。您可以逐步取代舊類型的執行個體，將它們換成新的類型。
**注意**  
不論使用何種終止政策，Amazon EC2 Auto Scaling 一律會先平衡可用區域之間的執行個體。因此，您可能會遇到某些較新的執行個體在較舊的執行個體之前終止的情況。例如，最近有新增的可用區域，或是某個可用區域的執行個體比另一個由群組使用的可用區域還要多等情況。