View a markdown version of this page

管理保留的实例 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理保留的实例

监控和控制已进入保留状态的 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 警报,以便在实例进入保留状态时提醒您。这可以帮助您跟踪成本影响,并确保您不会忘记清理需要手动干预的实例。

终止保留的实例

完成自定义操作后,通过调用 TerminateInstanceInAutoScalingGroupAPI 终止您保留的实例:

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