View a markdown version of this page

管理保留的執行個體 - Amazon EC2 Auto Scaling

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

管理保留的執行個體

監控並控制已移至保留狀態的 Amazon EC2 執行個體。使用 CloudWatch 指標追蹤保留的執行個體,然後在完成自訂動作後手動終止保留的執行個體。

保留的執行個體不會計入 Amazon EC2 Auto Scaling 群組所需的容量。當執行個體進入保留狀態時,Auto Scaling 會啟動替換執行個體以維持所需的容量。例如,假設 Auto Scaling 群組的所需容量為 10。當執行個體進入 Terminating:Retained 狀態時,Auto Scaling 會啟動替換執行個體,將所需的容量維持在 10。您現在總共有 11 個執行中的執行個體:作用中群組中有 10 個,加上 1 個保留的執行個體。所有 11 個執行個體的標準 Amazon EC2 費用將適用,直到您手動終止保留的執行個體為止。

保留執行個體的執行個體生命週期狀態

了解使用執行個體生命週期政策時,執行個體如何轉換生命週期狀態。執行個體遵循從正常終止到保留到最終終止的特定路徑。

觸發保留時,執行個體會轉換這些狀態:

  1. Terminating - 正常終止開始

  2. Terminating:Wait - 生命週期掛鉤執行

  3. Terminating:Proceed - 生命週期動作後續處理 (無論是成功還是失敗)

  4. Terminating:Retained - 勾點失敗,執行個體保留以進行手動介入

暖集區執行個體會根據情況採取不同的生命週期狀態路徑:

執行個體擴展回暖集區:

  1. Warmed:Pending - 開始正常暖集區轉換

  2. Warmed:Pending:Wait - 生命週期掛鉤執行

  3. Warmed:Pending:Proceed - 生命週期動作後續處理 (無論是成功還是失敗)

  4. Warmed:Pending:Retained - 勾點失敗,執行個體保留以進行手動介入

從暖集區終止的執行個體:

  1. Warmed:Terminating - 正常終止開始

  2. Warmed:Terminating:Wait - 生命週期掛鉤執行

  3. Warmed:Terminating:Proceed - 生命週期動作後續處理 (無論是否成功)

  4. Warmed:Terminating:Retained - 勾點失敗,執行個體保留以進行手動介入

監控保留的執行個體

由於保留的 Amazon EC2 執行個體會產生成本並需要手動介入,因此監控它們至關重要。Amazon EC2 Auto Scaling 提供數個 CloudWatch 指標來追蹤保留的執行個體。

啟用群組指標以追蹤保留的執行個體:

aws autoscaling enable-metrics-collection \ --auto-scaling-group-name my-asg \ --metrics GroupTerminatingRetainedInstances

可用的指標為:

  • GroupTerminatingRetainedInstances 顯示 Terminating:Retained 狀態中的執行個體數目。

  • GroupTerminatingRetainedCapacity 顯示 Terminating:Retained 狀態的執行個體所代表的容量單位。

  • WarmPoolTerminatingRetainedCapacity 會追蹤從暖集區終止的保留執行個體。

  • WarmPoolPendingRetainedCapacity 會追蹤返回暖集區的保留執行個體。

您也可以檢查 Amazon EC2 Auto Scaling 群組的擴展活動,以了解保留執行個體的原因。尋找具有 StatusCode: Cancelled和狀態原因訊息的終止活動,指出生命週期掛鉤失敗:

aws autoscaling describe-scaling-activities \ --auto-scaling-group-name my-asg

我們建議您在這些指標上建立 CloudWatch 警示,以便在執行個體進入保留狀態時提醒您。這可協助您追蹤成本影響,並確保您不會忘記清除需要手動介入的執行個體。

終止保留的執行個體

完成自訂動作後,請呼叫 TerminateInstanceInAutoScalingGroup API 來終止保留的執行個體:

aws autoscaling terminate-instance-in-auto-scaling-group \ --instance-id i-1234567890abcdef0 \ --no-should-decrement-desired-capacity