

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

# 執行個體維護政策
<a name="ec2-auto-scaling-instance-maintenance-policy"></a>

您可以為 Auto Scaling 群組設定執行個體維護政策，以滿足導致執行個體被取代的事件 (例如執行個體重新整理或運作狀態檢查程序) 發生期間的特定容量需求。

例如，假設您擁有一個具有少量執行個體的 Auto Scaling 群組。當運作狀態檢查指示執行個體受損時，您想要避免因終止然後取代執行個體而造成的潛在中斷。使用執行個體維護政策，您便可以確保 Amazon EC2 Auto Scaling 先啟動新的執行個體，然後等待該執行個體完全準備就緒後，再終止運作狀態不佳的執行個體。

執行個體維護政策也可協助您在同一時間取代多個執行個體的情況下，最大限度地減少潛在的中斷。您可以為政策設定狀態良好最低百分比和狀態良好最高百分比參數，而 Auto Scaling 群組只能在取代執行個體時，在該最低至最高範圍內增減容量。範圍越大，可同時取代的執行個體數量便會越多。

**Topics**
+ [Auto Scaling 群組的執行個體維護政策](instance-maintenance-policy-overview-and-considerations.md)
+ [在 Auto Scaling 群組上設定執行個體維護政策](set-instance-maintenance-policy-on-group.md)

# Auto Scaling 群組的執行個體維護政策
<a name="instance-maintenance-policy-overview-and-considerations"></a>

本主題提供可用選項的概觀，並介紹建立執行個體維護政策時需要考量的事項。

**Topics**
+ [概要](#instance-maintenance-policy-overview)
+ [核心概念](#instance-maintenance-policy-core-concepts)
+ [執行個體暖機期](#instance-maintenance-policy-instance-warm-up)
+ [運作狀態檢查寬限期](#instance-maintenance-policy-health-check-grace-period)
+ [擴展 Auto Scaling 群組](#instance-maintenance-policy-scaling-limits)
+ [範例方案](#instance-maintenance-policy-scenarios)

## 概要
<a name="instance-maintenance-policy-overview"></a>

當您為 Auto Scaling 群組建立執行個體維護政策時，該政策會影響導致執行個體被取代的 Amazon EC2 Auto Scaling 事件。這會導致在相同 Auto Scaling 群組中產生更一致的取代行為。此外，這也讓您可根據需求使群組的可用性或成本最佳化。

在主控台中可以使用下列組態選項：
+ **終止前啟動** – 必須先佈建新執行個體，才能終止現有執行個體。對於重視可用性多於節省成本的應用程式來說，此做法是理想的選擇。
+ **終止並啟動** – 在終止現有執行個體的同時佈建新執行個體。對於重視節省成本多於可用性的應用程式來說，此做法是理想的選擇。對於即使在取代執行個體時，也不應啟動超過目前可用容量的應用程式而言，這也是一個不錯的選擇。
+ **自訂政策** – 此選項可讓您在取代執行個體時，根據想要的可用容量的自訂上下限範圍來設定政策。這種做法可協助您在成本和可用性之間取得適當的平衡。

Auto Scaling 群組預設為沒有執行個體維護政策，因此會以預設行為來回應執行個體維護事件。預設行為如下表所述。


**執行個體維護事件預設行為**  

|  事件  |  Description  |  預設行為  | 
| --- | --- | --- | 
|  運作狀態檢查失敗  |  在執行個體的運作狀態檢查失敗時自動發生。Amazon EC2 Auto Scaling 會取代運作狀態檢查失敗的執行個體。若要了解運作狀態檢查失敗的原因，請參閱 [Auto Scaling 群組中的執行個體運作狀態檢查](ec2-auto-scaling-health-checks.md)。  |  終止並啟動。  | 
|  執行個體重新整理  |  在啟動執行個體重新整理時發生。視您的組態而定，執行個體重新整理可以一次取代一個執行個體、一次取代多個執行個體，或一次取代所有執行個體。如需詳細資訊，請參閱[使用執行個體重新整理來更新 Auto Scaling 群組中的執行個體](asg-instance-refresh.md)。  |  終止並啟動。  | 
|  執行個體生命週期上限  |  當執行個體達到您為 Auto Scaling 群組指定的執行個體生命週期上限時，則會自動發生。Amazon EC2 Auto Scaling 會取代達到執行個體生命週期上限的執行個體。如需詳細資訊，請參閱[根據執行個體生命週期上限來取代 Auto Scaling 執行個體](asg-max-instance-lifetime.md)。  |  終止並啟動。  | 
|  重新平衡  |  如有導致群組不平衡的基礎變更，則會自動發生。Amazon EC2 Auto Scaling 會在下列情況下重新平衡群組： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/instance-maintenance-policy-overview-and-considerations.html)  |  終止前啟動。 Amazon EC2 Auto Scaling 可能會超出群組的大小限制，超出量最高可達其*容量上限*的 10%。但是，如果您使用的是容量重新平衡，則最多只能超出這些限制*所需容量*的 10%。  | 

在下列情況下，Amazon EC2 Auto Scaling 將繼續預設為終止並啟動。因此，當其中一種情況發生時，群組的容量可能會小於執行個體維護政策的閾值下限。
+ 例如執行個體因人為行動而意外終止時。Amazon EC2 Auto Scaling 立即取代不再執行的執行個體。如需詳細資訊，請參閱[Amazon EC2 運作狀態檢查](health-checks-overview.md#instance-health-detection)。
+ 當 Amazon EC2 在 Amazon EC2 Auto Scaling 可以啟動替代執行個體之前，將執行個體做為排程事件的一部分而重新啟動、停止或淘汰。如需這些事件的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[執行個體的排程事件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)。
+ 當 Amazon EC2 Spot Service 啟動 Spot 執行個體中斷，之後 Spot 執行個體被強制終止時。

使用 Spot 執行個體時，如果您在 Auto Scaling 群組上啟用了容量重新平衡，則該執行個體可能已經有一個待定執行個體，而該執行個體來自我們在起始 Spot 中斷之前啟動的另一個 Spot 集區。如需有關容量重新平衡運作的詳細資訊，請參閱 [Auto Scaling 中的容量重新平衡，以取代具有風險的 Spot 執行個體](ec2-auto-scaling-capacity-rebalancing.md)。

但是，由於 Spot 執行個體無法保證會維持可用狀態，並且可能在兩分鐘的 Spot 執行個體中斷通知後終止，因此，如果執行個體在新執行個體啟動之前中斷，則可能會超過執行個體維護政策的閾值下限。

## 核心概念
<a name="instance-maintenance-policy-core-concepts"></a>

在開始使用之前，請熟悉以下核心概念和術語：

**所需容量**  
*所需容量*是建立 Auto Scaling 群組時的 Auto Scaling 群組容量。這也是群組未連接任何擴展條件時嘗試維持的容量。

**執行個體維護政策**  
*執行個體維護政策*控制執行個體是否在執行個體維護事件終止現有執行個體之前先佈建一個執行個體。它也會決定 Auto Scaling 群組在同時取代多個執行個體時，可能會低於和超出所需容量的程度。

**狀態良好最高百分比**  
*狀態良好最高百分比*是 Auto Scaling 群組在取代執行個體時可增加的所需容量百分比。它代表可以正常運作或待定的群組的百分比上限，以支援您的工作負載。在主控台中，您可以在使用**終止前啟動**選項或**自訂政策**選項時設定狀態良好最高百分比。有效值為 100-200%。

**狀態良好最低百分比**  
*狀態良好最低百分比*是維持服務狀態、運作狀態良好，以及在取代執行個體時可用來支援工作負載的所需容量百分比。執行個體在成功完成其第一個運作狀態檢查並經過指定的暖機時間後，即視為運作狀態良好且可供使用。在主控台中，您可以在使用**終止並啟動**選項或**自訂政策**選項時設定狀態良好最低百分比。有效值為 0-100%。  
若要更快取代執行個體，您可以指定較低的狀態良好最低百分比。不過，如果執行中的執行個體運作狀態不夠良好，可能會降低可用性。我們建議您選取合理值，以在要取代多個執行個體的情況下維持可用性。

## 執行個體暖機期
<a name="instance-maintenance-policy-instance-warm-up"></a>

如果執行個體在進入 `InService` 狀態後需要時間進行初始化，請為 Auto Scaling 群組啟用預設執行個體暖機期。使用預設執行個體暖機期，您便可以防止執行個體在準備就緒之前計入正常運作狀態百分比下限。這可確保 Amazon EC2 Auto Scaling 在終止現有執行個體之前，考慮到需要多長時間才能有足夠容量來支援工作負載。

另一項優點是，啟用預設的執行個體暖機期時，您可以改善用於動態擴展的 Amazon CloudWatch 指標。如果您的 Auto Scaling 群組有任何擴展政策，當群組橫向擴展時，會使用相同的預設暖機期，防止執行個體在完成初始化之前計入 CloudWatch 指標。

如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

## 運作狀態檢查寬限期
<a name="instance-maintenance-policy-health-check-grace-period"></a>

Amazon EC2 Auto Scaling 會根據您的 Auto Scaling 群組使用的運作狀態檢查狀態，判斷執行個體是否運作狀態良好。如需詳細資訊，請參閱[Auto Scaling 群組中的執行個體運作狀態檢查](ec2-auto-scaling-health-checks.md)。

為確保這些運作狀態檢查能夠盡快啟動，請勿將群組的運作狀態檢查寬限期設定得太高，但要足以讓您的 Elastic Load Balancing 運作狀態檢查來判斷目標是否可用來處理要求。如需詳細資訊，請參閱[設定 Auto Scaling 群組的運作狀態檢查寬限期。](health-check-grace-period.md)。

## 擴展 Auto Scaling 群組
<a name="instance-maintenance-policy-scaling-limits"></a>

執行個體維護政策僅適用於執行個體維護事件，且不會防止群組手動或自動擴展。

如果 Auto Scaling 群組連接了擴展政策或排程動作，則可在執行個體維護事件發生時並行執行。在這種情況下，它們可以增減群組的所需容量，但只能在您定義的擴展限制內。如需這些限制的詳細資訊，請參閱 [設定 Auto Scaling 群組的擴展限制](asg-capacity-limits.md)。

## 範例方案
<a name="instance-maintenance-policy-scenarios"></a>

在一般情況下，您的執行個體維護政策和所需容量可能如下所示：
+ 狀態良好最低百分比 = 90%
+ 狀態良好最高百分比 = 120%
+ 所需容量 = 100

在任何執行個體維護事件期間，Auto Scaling 群組可能最少只有 90 個執行個體，最多只有 120 個執行個體。事件結束後，群組擁有的執行個體數量會恢復為 100 個。

當您將執行個體維護政策與具有暖集區的 Auto Scaling 群組搭配使用時，狀態良好最低和最高百分比會分別套用至 Auto Scaling 群組和暖集區。

例如，假設這是您的設定：
+ 狀態良好最低百分比 = 90%
+ 狀態良好最高百分比 = 120%
+ 所需容量 = 100
+ 暖集區大小 = 10

如果您啟動執行個體重新整理以回收群組的執行個體，Amazon EC2 Auto Scaling 會先取代 Auto Scaling 群組中的執行個體，然後取代暖集區中的執行個體。雖然 Amazon EC2 Auto Scaling 仍在取代 Auto Scaling 群組中的執行個體，但該群組可能最少只有 90 個執行個體，最多只有 120 個執行個體。完成群組取代程序後，Amazon EC2 Auto Scaling 便可以取代暖集區中的執行個體。發生這種情況時，暖集區可能最少只有 9 個執行個體，最多只有 12 個執行個體。

# 在 Auto Scaling 群組上設定執行個體維護政策
<a name="set-instance-maintenance-policy-on-group"></a>

您可以在建立 Auto Scaling 群組時建立執行個體維護政策。您也可以為現有的群組建立此政策。

在 Auto Scaling 群組設定執行個體維護政策後，除非您想要覆寫執行個體維護，否則您不必再為執行個體重新整理功能指定狀態良好最低和最高百分比的參數。

在主控台中，Amazon EC2 Auto Scaling 提供可協助您快速入門的選項。

**Topics**
+ [設定執行個體維護政策](set-instance-maintenance-policy.md)
+ [移除執行個體維護政策](remove-instance-maintenance-policy.md)

# 設定執行個體維護政策
<a name="set-instance-maintenance-policy"></a>

若要在 Auto Scaling 群組上設定執行個體維護政策，請使用下列其中一種方法：

------
#### [ Console ]

**在新群組設定執行個體維護政策 (主控台)**

1. 依照 [使用啟動範本建立 Auto Scaling 群組](create-asg-launch-template.md) 的說明完成程序中的每個步驟，直到步驟 11。

1. 在**設定群組大小和擴展政策**上，為**所需容量**輸入要啟動之執行個體的初始數量。

1. 在**擴展**區段的**擴展限制**下，如果**所需容量**的新值大於**所需容量下限**和**所需容量上限**，則**所需容量上限**會自動增加到新的所需容量值。您可視需要變更這些限制。

1. 針對 **Automatic scaling**，選擇是否要建立目標追蹤擴展政策。您也可以在建立 Auto Scaling 群組後建立此政策。

   如果您選擇**目標追蹤擴展政策**，請依照 [建立目標追蹤擴展政策](policy_creating.md) 中的指示建立政策。

1. 在**執行個體維護政策**區段中，選擇其中一個可用選項：
   + **終止前啟動**：必須先佈建新執行個體，才能終止現有執行個體。對於重視可用性多於節省成本的應用程式來說，這是理想的選擇。
   + **終止並啟動**：在終止現有執行個體的同時佈建新執行個體。對於重視節省成本多於可用性的應用程式來說，這是理想的選擇。對於不應啟動超過目前可用容量的應用程式而言，這也是一個不錯的選擇。
   + **自訂政策**：此選項可讓您根據想要在取代執行個體時可用容量的自訂上下限範圍來設定政策。這可協助您在成本和可用性之間取得適當的平衡。

1. 針對**設定正常運作狀態百分比**，請輸入下列一個或兩個欄位的值。啟用的欄位會根據您在上一個步驟所選選項而有所不同。
   + **下限**：設定繼續取代執行個體所需的狀態良好最低百分比。
   + **上限**：設定取代執行個體時可能的狀態良好最高百分比。

1. 展開**根據所需容量檢視取代期間的容量**區段，以確認如何在群組中套用**下限**和**上限**。使用的實際值取決於所需的容量值，此值會隨群組擴展而有所改變。

1. 繼續[使用啟動範本建立 Auto Scaling 群組](create-asg-launch-template.md)中的步驟。

------
#### [ AWS CLI ]

**在新群組設定執行個體維護政策 (AWS CLI)**  
將 `--instance-maintenance-policy` 選項新增至 [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) 命令。下列範例會針對名為 `my-asg` 的新 Auto Scaling 群組設定執行個體維護政策。

```
aws autoscaling create-auto-scaling-group \
  --launch-template LaunchTemplateName=my-launch-template,Version='1' \
  --auto-scaling-group-name my-asg \
  --min-size 1 \
  --max-size 10 \
  --desired-capacity 5 \
  --default-instance-warmup 20 \
  --instance-maintenance-policy '{
      "MinHealthyPercentage": 90,
      "MaxHealthyPercentage": 120       
    }' \
  --vpc-zone-identifier "subnet-5e6example,subnet-613example,subnet-c93example"
```

------

------
#### [ Console ]

**在現有群組設定執行個體維護政策 (主控台)**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 在螢幕上方的導覽列中，選擇您在建立 Auto Scaling 群組時所在的 AWS 區域 。

1. 選取 Auto Scaling 群組旁的核取方塊。

   頁面底部會開啟一個分割窗格。

1. 在**詳細資訊**索引標籤上，選擇**執行個體維護政策**、**編輯**。

1. 若要在群組設定執行個體維護政策，選擇其中一個可用選項：
   + **終止前啟動**：必須先佈建新執行個體，才能終止現有執行個體。對於重視可用性多於節省成本的應用程式來說，這是理想的選擇。
   + **終止並啟動**：在終止現有執行個體的同時佈建新執行個體。對於重視節省成本多於可用性的應用程式來說，這是理想的選擇。對於不應啟動超過目前可用容量的應用程式而言，這也是一個不錯的選擇。
   + **自訂政策**：此選項可讓您根據想要在取代執行個體時可用容量的自訂上下限範圍來設定政策。這可協助您在成本和可用性之間取得適當的平衡。

1. 針對**設定正常運作狀態百分比**，請輸入下列一個或兩個欄位的值。啟用的欄位會根據您在上一個步驟所選選項而有所不同。
   + **下限**：設定繼續取代執行個體所需的狀態良好最低百分比。
   + **上限**：設定取代執行個體時可能的狀態良好最高百分比。

1. 展開**根據所需容量檢視取代期間的容量**區段，以確認如何在群組中套用**下限**和**上限**。使用的實際值取決於所需的容量值，此值會隨群組擴展而有所改變。

1. 選擇**更新**。

------
#### [ AWS CLI ]

**在現有群組上設定執行個體維護政策 (AWS CLI)**  
將 `--instance-maintenance-policy` 選項新增至 [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html) 命令。下列範例會針對指定 Auto Scaling 群組設定執行個體維護政策。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
  --instance-maintenance-policy '{
      "MinHealthyPercentage": 90,
      "MaxHealthyPercentage": 120       
    }'
```

------

# 移除執行個體維護政策
<a name="remove-instance-maintenance-policy"></a>

如果您想要停止使用 Auto Scaling 群組的執行個體維護政策，您可以將其移除。

------
#### [ Console ]

**移除執行個體維護政策 (主控台)**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 在螢幕上方的導覽列中，選擇您在建立 Auto Scaling 群組時所在的 AWS 區域 。

1. 選取 Auto Scaling 群組旁的核取方塊。

   頁面底部會開啟一個分割窗格。

1. 在**詳細資訊**索引標籤上，選擇**執行個體維護政策**、**編輯**。

1. 選擇**無執行個體維護政策**。

1. 選擇**更新**。

------
#### [ AWS CLI ]

**移除執行個體維護政策 (AWS CLI)**  
將 `--instance-maintenance-policy` 選項新增至 [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html) 命令。下列範例為從指定 Auto Scaling 群組移除執行個體維護政策。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
  --instance-maintenance-policy '{
      "MinHealthyPercentage": -1,
      "MaxHealthyPercentage": -1       
    }'
```

------