为 Amazon EC2 Auto Scaling 配置终止策略 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为 Amazon EC2 Auto Scaling 配置终止策略

终止策略提供了 Amazon EC2 Auto Scaling 在按特定顺序终止实例时所遵循的标准。默认情况下,Amazon EC2 Auto Scaling 使用终止策略,该策略旨在首先终止使用过时配置的实例。您可以更改终止策略以控制哪些实例最需要先终止。

当 Amazon EC2 Auto Scaling 终止实例时,它会尝试在为你的 Auto Scaling 组启用的可用区之间保持平衡。维护区域平衡优先于终止政策。如果一个可用区的实例数多于其他可用区,则 Amazon EC2 Auto Scaling 会先将终止策略应用于不平衡的区域。如果可用区域保持平衡,则会在所有区域中应用终止策略。

默认终止政策的工作原理

当 Amazon EC2 Auto Scaling 需要终止一个实例时,它会首先确定哪个可用区(一个或多个区域)的实例最多,并且至少有一个实例不受缩容保护。然后,它继续评估已确定的可用区内未受保护的实例,如下所示:

使用过时配置的实例
  • 对于使用启动模板的群组 — 确定是否有任何实例使用过时的配置,按以下顺序排列优先级:

    1. 首先,检查是否有使用启动配置启动的实例。

    2. 然后,检查是否有使用其他启动模板而不是当前启动模板启动的实例。

    3. 最后,使用当前启动模板的最旧版本检查实例。

  • 对于使用启动配置的组-确定是否有任何实例使用最旧的启动配置。

如果找不到配置过时的实例,或者有多个实例可供选择,Amazon EC2 Auto Scaling 会考虑下一个标准,即实例接近下一个计费时间。

接近下一个计费时间的实例

确定是否有符合先前标准的实例最接近下一个计费时间。如果多个实例的距离相等,则随机终止一个实例。这可以帮助您最大限度地利用按小时计费的实例。但是,现在大多数 EC2 使用量按秒计费,因此这种优化提供的好处较少。有关更多信息,请参阅 Amazon EC2 定价

以下流程图说明了默认终止策略如何适用于使用启动模板的群组。

显示了 Auto Scaling 组如何使用默认终止策略终止实例的流程图。

默认终止策略和混合实例组

在终止混合实例组中的实例时,Amazon EC2 Auto Scaling 会应用额外的标准。

当 Amazon EC2 Auto Scaling 需要终止实例时,它会首先根据群组的设置确定应终止哪个购买选项(竞价或按需)。这样可以确保该组在一段时间内朝着竞价型实例和按需实例的指定比例发展。

然后,它会在每个可用区内独立应用终止策略。它决定在哪个竞价型实例或按需实例中终止哪个可用区,以保持可用区域的平衡。同样的逻辑适用于为实例类型定义权重的混合实例组。

在每个区域内,默认终止策略的工作原理如下,用于确定购买选项中哪些不受保护的实例可以终止:

  1. 确定是否可以终止任何实例,以提高与 Auto Scaling 组的指定分配策略的一致性。如果没有确定要优化的实例,或者有多个实例可供选择,则评估会继续。

  2. 确定是否有任何实例使用过时的配置,按以下顺序排列优先级:

    1. 首先,检查是否有使用启动配置启动的实例。

    2. 然后,检查是否有使用其他启动模板而不是当前启动模板启动的实例。

    3. 最后,使用当前启动模板的最旧版本检查实例。

    如果找不到配置过时的实例,或者有多个实例可供选择,则评估会继续。

  3. 确定是否有任何实例最接近下一个计费时间。如果多个实例的距离相等,则随机选择一个。

预定义的终止政策

您可以从以下预定义的终止政策中进行选择:

  • Default— 根据默认终止策略终止实例。

  • AllocationStrategy— 终止 Auto Scaling 组中的实例,使其余实例与即将终止的实例类型(竞价型实例或按需实例)的分配策略保持一致。当您首选的实例类型发生变化时,可使用该策略。如果竞价分配策略是 lowest-price,则您可以逐渐在 N 个最低价竞价池中重新平衡分布竞价型 实例。如果竞价分配策略是 capacity-optimized,则您可以逐渐重新平衡具有更多可用竞价容量的竞价池之间 竞价型实例的分布。您也可以使用较高优先级类型的按需实例逐渐替代较低优先级类型的按需实例。

  • OldestLaunchTemplate— 终止使用最旧启动模板的实例。利用此策略,会首先终止使用非当前启动模板的实例,然后终止使用当前启动模板的最旧版本的实例。如果要更新某个组并且逐步淘汰先前配置中的实例时,此策略非常有用。

  • OldestLaunchConfiguration— 终止启动配置最旧的实例。如果要更新某个组并且逐步淘汰先前配置中的实例时,此策略非常有用。使用此策略,使用非当前启动配置的实例将首先终止。

  • ClosestToNextInstanceHour— 终止最接近下一个计费时间的实例。此策略有助于最大限度使用按小时收费的实例。

  • NewestInstance— 终止组中最新的实例。如果要测试新的启动配置但不想在生产中保留它时,此策略非常有用。

  • OldestInstance— 终止组中最旧的实例。当您将 Auto Scaling 组中的实例升级为新的 EC2 实例类型,此选项十分有用。您可以逐渐将较旧类型的实例替换为较新类型的实例。

    注意

    Amazon EC2 Auto Scaling 始终首先在可用区间平衡实例,无论使用何种终止策略。因此,您可能会遇到一些较新的实例在旧实例之前终止的情况。例如,当某个可用区的实例数多于该组使用的其他可用区时,或某个可用区的实例数多于该组使用的其他可用区。