

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

# 執行個體重新整理如何在 Auto Scaling 群組中運作
<a name="instance-refresh-overview"></a>

本主題說明執行個體重新整理的運作方式，並介紹有效使用它所需的重要概念。

**Topics**
+ [運作方式](#instance-refresh-how-it-works)
+ [核心概念](#instance-refresh-core-concepts)
+ [運作狀態檢查寬限期](#instance-refresh-health-check-grace-period)
+ [執行個體類型相容性](#instance-type-compatibility)
+ [限制](#instance-refresh-limitations)

## 運作方式
<a name="instance-refresh-how-it-works"></a>

若要重新整理 Auto Scaling 群組中的執行個體，您可以定義新的組態，其中包含應用程式的最新版本，以及您想要進行的任何其他更新。

執行個體重新整理支援兩種更新執行個體的策略：
+ **滾動策略 （預設）** — 根據您的偏好設定終止執行個體並批次啟動新的執行個體。這可確保 Auto Scaling 群組在整個更新過程中維持所需的容量和可用性。
+ **取代根磁碟區策略** — 僅取代根磁碟區來更新執行個體，而不終止執行個體。這會保留執行個體網路介面、非根 EBS 磁碟區和執行個體存放區資料。

取代根磁碟區策略的需求：
+ Auto Scaling 群組必須使用混合執行個體政策
+ 混合執行個體政策中的所有覆寫都必須指定 `ImageId` 
+ AMIs只能包含單一根磁碟區
+ 所有執行個體都必須符合群組的啟動範本組態
+ 您必須使用具有包含`ImageId`覆寫之混合執行個體政策的所需組態來啟動執行個體重新整理。

啟用略過比對時，Auto Scaling 會將每個執行個體目前的 AMI ID 與您所需組態中的 AMI IDs 進行比較。它只會取代 AMI IDs 不相符的執行個體，讓您略過已更新的執行個體。

### 執行執行個體重新整理
<a name="instance-refresh-process"></a>

啟動執行個體重新整理，以根據該組態將現有執行個體取代為新的執行個體。

1. 建立新的啟動範本，或使用所需的組態變更更新現有範本，例如新的 Amazon Machine Image (AMI)。如需詳細資訊，請參閱[為 Auto Scaling 群組建立啟動範本](create-launch-template.md)。

1. 使用 Amazon EC2 Auto Scaling 主控台 AWS CLI或 SDK 啟動執行個體重新整理：
   + 指定您建立的新啟動範本或啟動範本版本。這將用於啟動新的執行個體。
   + 設定偏好的運作狀態百分比下限和上限。這可控制同時取代多少執行個體，以及在終止舊執行個體之前是否啟動新執行個體。
   + 設定任何選用設定，例如：
     + **檢查點** – 在特定百分比的取代之後暫停執行個體重新整理，以驗證進度。
     + **製作時間** – 在執行個體重新整理結束時暫停，以在執行個體重新整理視為完成之前驗證執行個體的運作狀態。
     + **略過比對** – 比較舊執行個體與新組態，並僅取代不相符的執行個體。當您從主控台啟動執行個體重新整理時，略過比對預設為開啟。
     + **多個執行個體類型** – 將新的或更新的[混合執行個體政策](ec2-auto-scaling-mixed-instances-groups.md)套用為所需組態的一部分。

當執行個體重新整理開始時，Amazon EC2 Auto Scaling 將：
+ 根據運作狀態百分比下限和上限，批次取代執行個體。
+ 如果運作狀態最低百分比設定為 100%，請先啟動新執行個體，再終止舊執行個體。這可確保隨時維持所需的容量。
+ 檢查執行個體的運作狀態，並在取代更多執行個體之前給予他們暖機時間。
+ 終止並取代發現運作狀態不佳的執行個體。
+ 在執行個體重新整理成功後，使用新的組態變更自動更新 Auto Scaling 群組設定。
+ 在暖集區中的`InService`執行個體之前取代執行個體。

下列流程圖說明當您將運作狀態最低百分比設定為 100% 時，終止行為之前的啟動。

![\[顯示當運作狀態最低百分比設定為 100% 時，執行個體重新整理如何運作的圖表。\]](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/images/instance-refresh-high-level-flowchart-diagram.png)


**注意**  
只有在您未設定執行個體維護政策，或需要覆寫現有政策時，才需要指定執行個體重新整理的運作狀態百分比下限和上限。如需詳細資訊，請參閱[執行個體維護政策](ec2-auto-scaling-instance-maintenance-policy.md)。  
同樣地，如果您尚未啟用預設暖機期，或需要覆寫預設值，則只需要指定執行個體重新整理的執行個體暖機期。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

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

在開始使用之前，請熟悉以下執行個體重新整理核心概念：

**狀態良好最低百分比**  
*運作狀態良好的最低百分比*是在執行個體重新整理期間保持服務狀態、運作狀態良好且可供使用的所需容量百分比，以便繼續重新整理。例如，如果狀態良好最低百分比為 90%，而狀態良好最高百分比為 100%，則一次會取代 10% 的容量。如果新執行個體未通過運作狀態檢查，Amazon EC2 Auto Scaling 會終止並取代執行個體。如果執行個體重新整理無法啟動任何運作狀態良好的執行個體，則執行個體重新整理最終會失敗，而不會影響其他 90% 的群組。如果新執行個體保持運作狀態並完成暖機期，Amazon EC2 Auto Scaling 可以繼續取代其他執行個體。  
執行個體重新整理可以一次取代一個執行個體、一次取代多個執行個體，或一次取代所有執行個體。若要一次取代一個執行個體，請將狀態良好最低和最高百分比均設定為 100%。這會將執行個體重新整理的行為變更為在終止前啟動，以防止群組的容量降低至其所需容量的 100% 以下。若要一次取代所有執行個體，請將狀態良好最低百分比設為 0%。

**狀態良好最高百分比**  
*狀態良好最高百分比*是 Auto Scaling 群組在取代執行個體時可增加的所需容量百分比。上下限之間的差異不能大於 100。範圍越大，可同時取代的執行個體數量便會越多。

**執行個體暖機期**  
*執行個體暖機期*是指新執行個體的狀態變更為 `InService` 到視為已完成初始化經過的時間。在執行個體重新整理期間，如果執行個體通過其運作狀態檢查，Amazon EC2 Auto Scaling 在判斷新啟動的執行個體運作狀態良好之後，就不會立即繼續取代下一個執行個體。它會等待暖機期，然後再繼續取代下一個執行個體。如果您的應用程式仍需要一些初始化時間才能回應請求，這個功能會相當實用。  
執行個體暖機期的運作方式與預設執行個體暖機期相同。因此適用相同的擴展考量。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

**所需組態**  
*所需組態*是您希望 Amazon EC2 Auto Scaling 在整個 Auto Scaling 群組中部署的新組態。例如，您可為執行個體指定新啟動範本和新執行個體類型。在執行個體重新整理期間，Amazon EC2 Auto Scaling 會將 Auto Scaling 群組更新為所需組態。如果在執行個體重新整理期間發生擴增事件，Amazon EC2 Auto Scaling 會以所需組態 (而不是群組的目前設定) 啟動新執行個體。執行個體重新整理成功後，Amazon EC2 Auto Scaling 會更新 Auto Scaling 群組設定，以便反映您在執行個體重新整理過程中指定的所需新組態。

**略過相符項目**  
略過相符項目會讓 Amazon EC2 Auto Scaling 忽略已經有最新更新的執行個體。如此一來，您就不會取代超過需要的執行個體數量。當您想要確定 Auto Scaling 群組使用特定版本的啟動範本，並且僅取代使用不同版本的執行個體時，這會很有幫助。

**檢查點**  
*檢查點*是執行個體重新整理暫停一段指定時間的時間點。執行個體重新整理可以包含多個檢查點。Amazon EC2 Auto Scaling 會為每個檢查點發出事件。因此，您可新增 EventBridge 規則以將事件傳送到某個目標 (例如 Amazon SNS)，以便在到達檢查點時收到通知。到達檢查點後，您就能夠驗證部署。如果發現任何問題，您可以取消執行個體重新整理或進行回復。分階段部署更新的能力是檢查點的主要優點。如果不使用檢查點，輪流取代將持續執行。

若要深入了解啟動執行個體重新整理時可設定的所有預設設定，請參閱 [了解執行個體重新整理的預設值](understand-instance-refresh-default-values.md)。

## 運作狀態檢查寬限期
<a name="instance-refresh-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)。

## 執行個體類型相容性
<a name="instance-type-compatibility"></a>

在變更執行個體類型之前，最好先確認它可以與您的啟動範本搭配運作。這會確認與您指定的 AMI 的相容性。例如，假設您已從全虛擬化 (PV) AMI 啟動原始執行個體，但想要變更為只有硬體虛擬機器 (HVM) AMI 支援的目前世代執行個體類型。在這種情況下，您必須在啟動範本中使用 HVM AMI。

若要在不啟動執行個體的情況下確認執行個體類型相容性，請使用 [run-instances](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/run-instances.html) 命令搭配 `--dry-run` 選項，如下列範例所示。

```
aws ec2 run-instances --launch-template LaunchTemplateName=my-template,Version='1' --dry-run
```

如需如何判斷相容性的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[變更執行個體類型的相容性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resize-limitations.html)。

## 限制
<a name="instance-refresh-limitations"></a>
+ **總持續時間** — 執行個體重新整理可繼續主動取代執行個體的時間上限為 14 天。
+ **加權群組特定行為的差異**：如果混合執行個體群組的執行個體權重設定為大於或等於群組所需容量，Amazon EC2 Auto Scaling 可能會一次取代所有`InService`執行個體。若要避免這種情況，請遵循 [設定 Auto Scaling 群組以使用執行個體權重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md) 主題中的建議。當您將權重與 Auto Scaling 群組搭配使用時，請指定大於您最大權重的所需容量。
+ **一小時逾時** - 當執行個體重新整理因為等待取代待命或受到縮減保護的執行個體，或新執行個體未通過運作狀態檢查，而無法繼續進行取代時，Amazon EC2 Auto Scaling 會繼續重試一小時。它也會提供狀態訊息，以協助您解決問題。如果問題在一小時後仍然存在，操作會失敗。其目的是在發生暫時性問題時，給它時間恢復。
+ **透過使用者資料部署程式碼** — 略過比對不會檢查從使用者資料指令碼部署的程式碼變更。如果您使用使用者資料提取新程式碼並在新執行個體上安裝這些更新，我們建議您關閉略過比對，以確保所有執行個體都收到最新的程式碼，即使沒有啟動範本版本更新也一樣。
+ **更新限制** — 如果您在具有所需組態的執行個體重新整理處於作用中狀態時嘗試更新 Auto Scaling 群組的啟動範本、啟動組態或混合執行個體政策，請求將失敗，並出現下列驗證錯誤： `An active instance refresh with a desired configuration exists. All configuration options derived from the desired configuration are not available for update while the instance refresh is active.`
+ **以屬性為基礎的執行個體選擇** — 如果您的 Auto Scaling 群組使用以屬性為基礎的執行個體選擇 （在混合執行個體政策`InstanceRequirements`中指定），則不支援下列執行個體重新整理參數：
  + **SkipMatching** - 如果您使用已`InstanceRequirements`設定的 Auto Scaling 群組中的 `SkipMatching` 參數啟動執行個體重新整理，則會失敗。
  + **DesiredConfiguration** - 如果您使用已`InstanceRequirements`設定的 Auto Scaling 群組中的 `DesiredConfiguration` 參數啟動執行個體重新整理，則會失敗。

  如果您需要在具有屬性型執行個體選擇的 Auto Scaling 群組上執行執行個體重新整理，請在沒有這些參數的情況下啟動執行個體重新整理。
+ 根磁碟區取代不支援 Elastic Load Balancing。