

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

# Amazon EC2 Auto Scaling 实例生命周期
<a name="ec2-auto-scaling-lifecycle"></a>

Auto Scaling 组中的 EC2 实例具有的路径或生命周期不同于其他 EC2 实例中的路径或生命周期。生命周期从 Auto Scaling 组启动实例并将其投入使用时开始。生命周期在您终止实例或 Auto Scaling 组禁用实例并将其终止时结束。

**注意**  
一旦启动实例，您就需要为实例付费，包括尚未将实例投入使用的时间。

下图阐释了 Amazon EC2 Auto Scaling 生命周期内的实例状态之间的过渡。

![\[Auto Scaling 组中实例的生命周期。\]](http://docs.amazonaws.cn/autoscaling/ec2/userguide/images/auto-scaling-instance-lifecycle.png)


## 扩展
<a name="as-lifecycle-scale-out"></a>

以下横向扩展事件指示 Auto Scaling 组启动 EC2 实例并将其附加到组：
+ 手动增大组的大小。有关更多信息，请参阅 [更改现有自动扩缩组的所需容量](ec2-auto-scaling-scaling-manually.md#change-desired-capacity)。
+ 您创建一个扩展策略来自动根据指定的所需增量来增大组的大小。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 的动态扩缩](as-scale-based-on-demand.md)。
+ 您可以通过安排在某个特定时间增大组的大小来设置扩展。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 的计划扩缩](ec2-auto-scaling-scheduled-scaling.md)。

在发生横向扩展事件时，Auto Scaling 组将使用分配的启动模板来启动所需数目的 EC2 实例。这些实例最初处于 `Pending` 状态。如果您向 Auto Scaling 组添加生命周期挂钩，则可在此处执行自定义操作。有关更多信息，请参阅 [生命周期钩子](#as-lifecycle-hooks)。

在每个实例完全配置并通过 Amazon EC2 运行状况检查后，该实例将附加到 Auto Scaling 组并进入 `InService` 状态。针对 Auto Scaling 组的所需容量对实例进行计数。

如果您的 Auto Scaling 组配置为从某个 Elastic Load Balancing 负载均衡器接收流量，则 Amazon EC2 Auto Scaling 会将实例标记为 `InService`，然后自动将您的实例注册至此负载均衡器。

以下总结了为横向扩展事件向负载均衡器注册实例的步骤。

![\[横向扩展事件的高级示意图。\]](http://docs.amazonaws.cn/autoscaling/ec2/userguide/images/scale-out-diagram.png)


## 已投入使用的实例
<a name="as-lifecycle-inservice"></a>

实例将保持 `InService` 状态，直至出现下列情况之一：
+ 发生缩减事件，并且 Amazon EC2 Auto Scaling 选择终止此实例来减小 Auto Scaling 组的大小。有关更多信息，请参阅 [控制在横向缩减过程中要终止的 Auto Scaling 实例](as-instance-termination.md)。
+ 将实例置于 `Standby` 状态。有关更多信息，请参阅 [进入和退出备用状态](#as-lifecycle-standby)。
+ 您从 Auto Scaling 组分离实例。有关更多信息，请参阅 [从自动扩缩组中分离或附加实例](ec2-auto-scaling-detach-attach-instances.md)。
+ 实例未通过所需数目的运行状况检查，因此将从 Auto Scaling 组中删除实例、终止实例和替换实例。有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

## 缩小
<a name="as-lifecycle-scale-in"></a>

以下缩减事件指示 Auto Scaling 组从组中分离 EC2 实例并将其终止：
+ 手动减小组的大小。有关更多信息，请参阅 [更改现有自动扩缩组的所需容量](ec2-auto-scaling-scaling-manually.md#change-desired-capacity)。
+ 您创建一个扩展策略，自动根据指定的所需减少量来减小组的大小。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 的动态扩缩](as-scale-based-on-demand.md)。
+ 您可以通过安排在某个特定时间减小组的大小来设置扩展。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 的计划扩缩](ec2-auto-scaling-scheduled-scaling.md)。

您必须为所创建的每个横向扩展事件创建一个相应的缩减事件。这有助于确保分配给您的应用程序的资源与对这些资源的需求尽可能相符。

发生缩减事件时，Auto Scaling 组会终止一个或多个实例。Auto Scaling 组使用其终止策略来确定要终止的实例。正在从自动扩缩组中终止的实例将进入 `Terminating` 状态，且无法重新将其投入使用。

如果您的自动扩缩组配置为从某个 Elastic Load Balancing 负载均衡器接收流量，则 Amazon EC2 Auto Scaling 会自动从此负载均衡器取消注册终止的实例。取消注册实例可确保将所有新请求重定向到负载均衡器目标组中的其他实例，同时允许与该实例的现有连接继续，直到取消注册延迟到期。

如果您向自动扩缩组添加生命周期挂钩，则可在终止中的实例上执行自定义操作。有关更多信息，请参阅 [生命周期钩子](#as-lifecycle-hooks)。最后，实例将完全终止并进入 `Terminated` 状态。

以下总结了为横向缩减事件向负载均衡器取消注册实例的步骤。

![\[横向缩减事件的高级示意图。\]](http://docs.amazonaws.cn/autoscaling/ec2/userguide/images/scale-in-diagram.png)


## 分离实例
<a name="as-lifecycle-detach"></a>

您可以从 Auto Scaling 组中分离实例。分离实例后，您可以独立于 Auto Scaling 组管理实例或者将实例附加到其他 Auto Scaling 组。

有关更多信息，请参阅 [从自动扩缩组中分离或附加实例](ec2-auto-scaling-detach-attach-instances.md)。

## 附加实例
<a name="as-lifecycle-attach"></a>

您可以将符合特定条件的正在运行的 EC2 实例附加到您的 Auto Scaling 组。在附加实例后，将该实例作为 Auto Scaling 组的一部分进行管理。

有关更多信息，请参阅 [从自动扩缩组中分离或附加实例](ec2-auto-scaling-detach-attach-instances.md)。

## 生命周期钩子
<a name="as-lifecycle-hooks"></a>

您可以将生命周期挂钩添加到 Auto Scaling 组，以便在实例启动或终止时执行自定义操作。

当 Amazon EC2 Auto Scaling 响应横向扩展事件时，它将启动一个或多个实例。这些实例最初处于 `Pending` 状态。如果您已将一个 `autoscaling:EC2_INSTANCE_LAUNCHING` 生命周期挂钩添加到您的 Auto Scaling 组，则实例将从 `Pending` 状态转换为 `Pending:Wait` 状态。完成生命周期操作后，实例将进入 `Pending:Proceed` 状态。在完全配置实例后，实例将附加到 Auto Scaling 组并进入 `InService` 状态。

当 Amazon EC2 Auto Scaling 响应缩减事件时，它将终止一个或多个实例。这些实例将从 Auto Scaling 组中分离并进入 `Terminating` 状态。如果您已将一个 `autoscaling:EC2_INSTANCE_TERMINATING` 生命周期挂钩添加到您的 Auto Scaling 组，则实例将从 `Terminating` 状态转换为 `Terminating:Wait` 状态。完成生命周期操作后，实例将进入 `Terminating:Proceed` 状态。在完全终止实例后，实例将进入 `Terminated` 状态。

有关更多信息，请参阅 [Amazon EC2 Auto Scaling 生命周期钩子](lifecycle-hooks.md)。

## 进入和退出备用状态
<a name="as-lifecycle-standby"></a>

可以将任何处于 `InService` 状态的实例置于 `Standby` 状态。这使您能够终止对实例的使用，排查实例的问题或对实例进行更改，然后重新将实例投入使用。

处于 `Standby` 状态的实例继续由 Auto Scaling 组管理。但是，在将这些实例重新投入使用前，它们不是您的应用程序的有效部分。

有关更多信息，请参阅 [临时从 Auto Scaling 组中移除实例](as-enter-exit-standby.md)。