

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

# 将检查点添加到实例刷新
<a name="asg-adding-checkpoints-instance-refresh"></a>

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

**Topics**
+ [工作原理](#instance-refresh-checkpoints-how-it-works)
+ [注意事项](#instance-refresh-checkpoints-considerations)
+ [启用检查点](enable-checkpoints-console-cli.md)

## 工作原理
<a name="instance-refresh-checkpoints-how-it-works"></a>

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

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

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

![\[此图显示了检查点如何影响实例刷新流程。\]](http://docs.aws.amazon.com/zh_cn/autoscaling/ec2/userguide/images/checkpoints-instance-refresh.png)


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

Amazon EC2 Auto Scaling 会针对除 100% 完成检查点之外的每个检查点发出事件。您可以添加一条 EventBridge 规则，将事件发送到目标，例如 Amazon SNS。这样，当您可以运行所需的验证时，系统就会通知您。有关更多信息，请参阅 [为实例刷新事件创建 EventBridge 规则](monitor-events-eventbridge-sns.md)。

## 注意事项
<a name="instance-refresh-checkpoints-considerations"></a>

在使用检查点时，请记住以下注意事项：
+ 由于检查点基于百分比，因此要替换的实例数将随组的大小而变化。当发生横向扩展活动并且组的大小增加时，正在进行的操作可能会再次达到检查点。如果发生这种情况，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 % 的最小运行正常百分比。您的自动扩缩组有 10 个实例，并进行以下替换：
  + 0:00：将两个旧实例替换为新实例。
  + 0:10：两个新实例完成预热。
  + 0:25：将两个旧实例替换为新实例。（为了保持最低运行正常百分比，仅替换两个实例。）
  + 0:35：两个新实例完成预热。
  + 0:35：将一个旧实例替换为新实例。
  + 0:45：一个新实例完成预热。

  在 0:35 时，操作将停止启动新实例。完成百分比尚不能准确反映已完成替换的数量 (50%)，因为新实例未完成预热。在新实例于 0:45 完成其预热期后，完成百分比将显示 50%。
+ 如果启用了多个检查点，实例刷新检查点必须设置为 100%，以确保完全替换所有实例。如果最终检查点设置为小于 100%（例如 50%），则实例刷新将在达到该百分比检查点后停止替换实例，并且不会自动继续到 100% 完成。