将检查点添加到实例刷新 - Amazon A EC2 uto Scaling

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

将检查点添加到实例刷新

在使用实例刷新时,您可以选择分阶段替换实例,以便您可以随时对实例执行验证。要执行分阶段替换,请添加检查点,这些检查点是实例刷新暂停时的时间点。使用检查点使您能够更好地控制选择更新 Auto Scaling 组的方式。它可以帮助您确认您的应用程序将以可靠、可预测的方式运行。

工作方式

启动实例刷新时,您可以将检查点指定为 Auto Scaling 组中实例总数的百分比。这些检查点表示 Auto Scaling 组中必须是新实例的最小百分比,然后才认为已到达该检查点。例如,如果您的检查点是[20, 50, 100],则在 20% 的实例为新实例时到达第一个检查点;50% 为新实例时到达第二个检查点;当所有实例都是新实例时,则到达最后一个检查点。

Amazon EC2 Auto Scaling 会调整实例替换时间,以遵守指定的检查点百分比,同时保持组的最低健康百分比。为了达到检查点百分比,Amazon EC2 Auto Scaling 有时会替换少于最低运行正常百分比允许的值,但永远不会超过最低运行正常百分比允许的值。

以下自动扩缩组为例,该组有 10 个实例。检查点百分比为 [20,50,100],最低运行正常百分比为 80%,最高运行正常百分比为 100%。为了保持最低运行正常百分比,一次仅可替换两个实例。下图总结了在到达检查点之前替换实例的过程。

此图显示了检查点如何影响实例刷新流程。

在上面的示例中,每个启动的新实例都有一个实例预热期。您可能还拥有生命周期挂钩,该挂钩将实例置于等待状态,然后在实例启动或终止时执行自定义操作。

Amazon EC2 Auto Scaling 会为除百分之百完成的检查点之外的每个检查点发出事件。您可以添加一条 EventBridge 规则,将事件发送到目标,例如 Amazon SNS。这样,当您可以运行所需的验证时,系统就会通知您。有关更多信息,请参阅 为实例刷新事件创建 EventBridge 规则

注意事项

在使用检查点时,请记住以下注意事项:

  • 由于检查点基于百分比,因此要替换的实例数将随组的大小而变化。当发生扩展活动并且组规模增加时,正在进行的操作可能会再次到达检查点。如果发生这种情况,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%。