

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

# 將檢查點新增至執行個體重新整理
<a name="asg-adding-checkpoints-instance-refresh"></a>

使用執行個體重新整理時，您可以選擇分階段取代執行個體，以便隨時對執行個體執行驗證。若要分階段執行取代，您可以新增檢查點，即執行個體重新整理暫停的時間點。使用檢查點可讓您更好地控制選擇更新 Auto Scaling 群組的方式。它可幫助您確認應用程式以可靠、可預測的方式運作。

**Topics**
+ [運作方式](#instance-refresh-checkpoints-how-it-works)
+ [考量事項](#instance-refresh-checkpoints-considerations)
+ [啟用檢查點](enable-checkpoints-console-cli.md)

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

開始執行個體重新整理時，請以 Auto Scaling 群組中執行個體總數的百分比來指定檢查點。這些檢查點指出 Auto Scaling 群組中執行個體的最小百分比，在檢查點被視為達到之前必須是新的執行個體。例如，如果您的檢查點是 `[20, 50, 100]`，當 20% 的執行個體是新的、50% 是新的，以及所有執行個體都是新的最終檢查點時，第一個檢查點就會到達。

Amazon EC2 Auto Scaling 會逐步取代執行個體，以符合指定的檢查點百分比，同時維持群組的運作狀態百分比下限。為了達到檢查點百分比，Amazon EC2 Auto Scaling 有時會取代較少的執行個體，但絕不會超過狀態良好最低百分比允許的比例。

請考慮下列具有 10 個執行個體的 Auto Scaling 群組。檢查點百分比為 `[20,50,100]`，狀態良好最低百分比為 80%，狀態良好最高百分比為 100%。為了維持狀態良好最低百分比，一次只會取代兩個執行個體。下圖概括了到達檢查點之前取代執行個體的程序。

![\[此圖表顯示檢查點如何影響執行個體重新整理的流程。\]](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/images/checkpoints-instance-refresh.png)


在上述範例中，每個啟動的新執行個體都有一個執行個體暖機期。您也可能有一個 lifecycle hook，會使執行個體進入等待狀態，然後在啟動或終止時執行自訂動作。

Amazon EC2 Auto Scaling 會為每個檢查點發出事件，但 100% 完成檢查點除外。您可以新增 EventBridge 規則，將事件傳送到 Amazon SNS 等目標。如此一來，當您可以執行所需的驗證時，系統就會通知您。如需詳細資訊，請參閱[針對執行個體重新整理事件建立 EventBridge 規則](monitor-events-eventbridge-sns.md)。

## 考量事項
<a name="instance-refresh-checkpoints-considerations"></a>

使用檢查點時，請謹記以下幾點考量：
+ 檢查點是以百分比為基礎，因此要取代的執行個體數量會隨著群組的大小而變更。當橫向擴展活動發生且群組的大小增加時，進行中的操作可能會再次到達檢查點。如果發生這種情況，Amazon EC2 Auto Scaling 會傳送另一個通知，並在繼續之前重複檢查點之間的等待時間。
+ 在某些情況下，可以略過檢查點。例如，假設 Auto Scaling 群組有兩個執行個體，且檢查點百分比為 `[10,40,100]`。第一個執行個體遭取代後，Amazon EC2 Auto Scaling 會計算 50% 的群組已遭取代。因為 50% 高於前兩個檢查點，其會略過第一個檢查點 (`10`)，並傳送第二個檢查點 (`40`) 的通知。
+ 取消操作會停止進行任何進一步的取代。如果取消操作或在到達最後一個檢查點前失敗，任何已遭取代的執行個體都不會回復至先前的組態。
+ 在部分重新整理的情況下，當您重新執行操作時，Amazon EC2 Auto Scaling 不會從最後一個檢查點重新啟動，也不會僅在較舊執行個體遭取代時停止。但是，在將目標鎖定於新的執行個體之前，其會先針對較舊執行個體進行取代。
+ 當檢查點的百分比相對於群組中的執行個體數量太低時，完成的實際百分比可能高於該檢查點的百分比。例如，假設檢查點的百分比為 20%，而群組有四個執行個體。如果 Amazon EC2 Auto Scaling 取代了四個執行個體中的其中一個，則取代的實際百分比 (25%) 將高於檢查點的百分比 (20%)。
+ 到達檢查點後，顯示的整體百分比在執行個體完成暖機後才會更新。例如，您的檢查點百分比`[20,50]`的檢查點延遲為 15 分鐘，運作狀態最低為 80%。您的 Auto Scaling 群組有 10 個執行個體，並進行下列取代：
  + 0:00：用兩個新執行個體取代兩個較舊執行個體。
  + 0:10：兩個新執行個體完成暖機。
  + 0:25：用兩個新執行個體取代兩個較舊執行個體。(為了維持狀態良好最低百分比，只會取代兩個執行個體。)
  + 0:35：兩個新執行個體完成暖機。
  + 0:35：用一個新執行個體取代一個較舊執行個體。
  + 0:45：一個新執行個體完成暖機。

  0:35 時，操作停止啟動新執行個體。由於新執行個體沒有完成暖機，完成百分比未準確反映已完成取代的數量 (50%)。新執行個體在 0：45 完成暖機期後，完成百分比會顯示 50%。
+ 如果啟用多個檢查點，執行個體重新整理檢查點必須設定為 100%，以確保完全取代所有執行個體。如果您將最終檢查點設定為低於 100% 的百分比 （例如 50%)，執行個體重新整理會在達到該檢查點百分比後停止取代執行個體，而且不會自動繼續 100% 完成。

# 使用 AWS 管理主控台 或 啟用檢查點 AWS CLI
<a name="enable-checkpoints-console-cli"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來啟用檢查點。

## 啟用檢查點 (主控台)
<a name="enable-checkpoints-console"></a>

您可以在啟動執行個體重新整理之前啟用檢查點，以使用增量或分階段方法取代執行個體。這會為驗證提供額外的時間。

**啟動使用檢查點的執行個體重新整理**

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

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

   **Auto Scaling groups** (Auto Scaling 群組) 頁面底部會開啟一個分割窗格。

1. 在 **Instance refresh** (執行個體重新整理) 索引標籤的 **Instance refreshes** (執行個體重新整理) 中，選擇 **Start instance refresh** (啟動執行個體重新整理)。

1. 在 **Start instance refresh** (啟動執行個體重新整理) 頁面中，輸入 **Minimum healthy percentage** (運作狀態良好最低百分比) 和 **Instance warmup** (執行個體暖機期) 的值。

1. 勾選 **Enable checkpoints** (啟用檢查點) 核取方塊。

   這會顯示一個方塊，讓您在其中定義第一個檢查點的百分比閾值。

1. 針對 **Proceed until \$1\$1\$1\$1 % of the group is refreshed** (繼續操作，直到 \$1\$1\$1\$1% 的群組經重新整理)，輸入一個數字 (1—100)。這會設定第一個檢查點的百分比。

1. 若要新增其他檢查點，請選擇 **Add checkpoint** (新增檢查點)，然後定義下一個檢查點的百分比。

1. 若要指定到達檢查點後 Amazon EC2 Auto Scaling 等待的時長，請更新 **Wait for `1` `hour` between checkpoints** (在檢查點之間等待 1 小時) 中的欄位。時間單位可以是小時、分鐘或秒。

1. 如果您已完成處理執行個體重新整理的選取項目，請選擇**啟動執行個體重新整理**。

## 啟用檢查點 (AWS CLI)
<a name="enable-checkpoints-cli"></a>

若要使用 啟動啟用檢查點的執行個體重新整理 AWS CLI，您需要定義下列參數的組態檔案：
+ `CheckpointPercentages`：指定要取代的執行個體百分比閾值。這些閾值提供檢查點。當被取代並暖機的執行個體百分比達到其中一個指定的閾值時，此操作會等待一段指定的時間。您在 `CheckpointDelay` 中指定要等待的秒數。在指定的時間段過後，執行個體重新整理會繼續執行，直到到達下一個檢查點 (如果適用) 為止。
+ `CheckpointDelay`：指定到達檢查點後再繼續前的等待時間 (以秒為單位)。選擇提供足夠時間來執行驗證的時段。

需要成功取代的 Auto Scaling 群組百分比會以 `CheckpointPercentages` 陣列中所示的最後一個數值表示。成功取代此百分比之後，且每個執行個體被視為已完成初始化後，該操作會轉換為 `Successful`。

**建立多個檢查點**  
若要建立多個檢查點，請使用下列範例 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令。此範例設定了一次執行個體重新整理，這會開始重新整理 Auto Scaling 群組的 1%。等待 10 分鐘後，它會重新整理接下來的 19% 並再等待 10 分鐘。最後，它會在完成操作之前重新整理群組的剩餘部分。

```
aws autoscaling start-instance-refresh --cli-input-json file://config.json
```

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 80,
      "CheckpointPercentages": [1,20,100],
      "CheckpointDelay": 600
    }
}
```

**建立單一檢查點**  
若要建立單一檢查點，請使用下列範例 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令。此範例設定了一次執行個體重新整理，這會開始重新整理 Auto Scaling 群組的 20%。等待 10 分鐘後，它會在結束操作之前重新整理群組的剩餘部分。

```
aws autoscaling start-instance-refresh --cli-input-json file://config.json
```

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 80,
      "CheckpointPercentages": [20,100],
      "CheckpointDelay": 600
    }
}
```

**部分重新整理 Auto Scaling 群組**  
若僅要取代一部分的 Auto Scaling 群組，然後完全停止，請使用下列範例 [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) 命令。此範例設定了一次執行個體重新整理，這會開始重新整理 Auto Scaling 群組的 1%。等待 10 分鐘後，它會在結束操作之前重新整理接下來的 19%。

```
aws autoscaling start-instance-refresh --cli-input-json file://config.json
```

`config.json` 的內容：

```
{
    "AutoScalingGroupName": "my-asg",
    "Preferences": {
      "InstanceWarmup": 60,
      "MinHealthyPercentage": 80,
      "CheckpointPercentages": [1,20],
      "CheckpointDelay": 600
    }
}
```