将检查点添加到实例刷新 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

将检查点添加到实例刷新

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

Amazon EC2 Auto Scaling 会针对每个检查点发出事件。如果您添加 EventBridge 规则以将事件发送到 Amazon SNS 等目标,您可以在能够运行所需验证时收到通知。有关更多信息,请参阅为实例刷新事件创建 EventBridge 规则

注意事项

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

  • 当替换的实例数达到为检查点定义的百分比阈值时,将达到检查点。替换的实例所占的百分比可以等于或高于百分比阈值,但不能低于该阈值。

  • 达到检查点后,总体完成百分比不会显示最新状态,直到实例完成预热后才会显示。

    例如,假设您的 Auto Scaling 组有 10 个实例。您的检查点百分比为 [20,50],其中具有 15 分钟的检查点延迟和 80 % 的最低运行正常百分比。您的组将进行以下替换:

    • 0:00:将两个旧实例替换为新实例。

    • 0:10:两个新实例完成预热。

    • 0:25:将两个旧实例替换为新实例。(为了保持最低运行正常百分比,仅替换两个实例。)

    • 0:35:两个新实例完成预热。

    • 0:35:将一个旧实例替换为新实例。

    • 0:45:一个新实例完成预热。

    在 0:35 时,操作将停止启动新实例。完成百分比尚不能准确反映已完成替换的数量 (50%),因为新实例未完成预热。在新实例于 0:45 完成其预热期后,完成百分比将显示 50%。

  • 由于检查点基于百分比,因此要替换的实例数将随组的大小而变化。当发生横向扩展活动并且组的大小增加时,正在进行的操作可能会再次达到检查点。如果发生这种情况,Amazon EC2 Auto Scaling 会发送另一个通知,并在继续之前重复检查点之间的等待时间。

  • 在某些情况下可以跳过检查点。例如,假设您的 Auto Scaling 组有两个实例,并且您的检查点百分比为 [10,40,100]。替换第一个实例后,Amazon EC2 Auto Scaling 将计算出已替换该组的 50%。由于 50% 高于前两个检查点,因此它将跳过第一个检查点 (10) 并发送第二个检查点 (40) 的通知。

  • 取消操作将停止进行任何进一步替换。如果您取消操作或在达到最后一个检查点之前操作失败,则任何已替换的实例都不会回滚到其以前的配置。

  • 对于部分刷新,当您重新运行操作时,Amazon EC2 Auto Scaling 不会从最后一个检查点的时刻重新开启,也不会在仅替换旧实例时停止。但是,它将首先针对旧实例进行替换,然后再针对新实例。

启用检查点(控制台)

您可以在开启实例刷新之前启用检查点,以使用增量或分阶段方法替换实例。这将为验证提供额外时间。

启动使用检查点的实例刷新

  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选中您的 Auto Scaling 组旁边的复选框。

    将在 Auto Scaling group(Auto Scaling 组)页面底部打开一个拆分窗格。

  3. Instance refresh(实例刷新)选项卡上的 Active instance refresh(活跃实例刷新)中,选择 Start instance refresh(开启实例刷新)。

  4. Start instance refresh(开启实例刷新)页面上,输入 Minimum healthy percentage(最低运行正常百分比)和 Instance warmup(实例预热)的值。

  5. 选择 Enable checkpoints(启用检查点)复选框。

    此时将显示一个框,您可以在其中定义第一个检查点的百分比阈值。

  6. 对于 Proceed until ____ % of the group is refreshed(继续直到刷新该组的 ____ %)中,输入一个数字 (1–100)。这将设置第一个检查点的百分比。

  7. 要添加另一个检查点,请选择添加检查点,然后定义下一个检查点的百分比。

  8. 要指定 Amazon EC2 Auto Scaling 在达到检查点后等待多长时间,请更新在检查点之间等待 1 hour 中的字段。时间单位可以是小时、分钟或秒。

  9. 如果您已完成实例刷新选择,请选择 Start(开启)。

启用检查点 (Amazon CLI)

要在已使用 Amazon CLI 启用检查点的情况下开启实例刷新,您需要定义以下参数的配置文件:

  • CheckpointPercentages:指定要替换的实例百分比的阈值。这些阈值提供检查点。当替换和预热的实例百分比达到指定阈值之一时,操作将等待指定的时间段。您可指定在 CheckpointDelay 中等待的秒数。当指定的时间段过后,实例刷新将继续进行直到达到下一个检查点(如果适用)。

  • CheckpointDelay:指定在到达检查点之后与继续操作之前需要等待的时间量(以秒为单位)。选择提供足够时间以执行验证的时间段。

CheckpointPercentages 数组中显示的最后一个值描述需要成功替换的 Auto Scaling 组的百分比。在成功替换此百分比,并且每个实例都已预热且准备好再次提供流量后,该操作将转换到 Successful

创建多个检查点

要创建多个检查点,请使用以下示例 start-instance-refresh 命令。此示例配置了一个实例刷新,它最初刷新 Auto Scaling 组的 1%。在等待 10 分钟后,它会随后刷新接下来的 19%,然后再等待 10 分钟。最后,它会刷新该组的其余部分,然后结束操作。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json 的内容:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 80, "CheckpointPercentages": [1,20,100], "CheckpointDelay": 600 } }

创建单个检查点

要创建单个检查点,请使用以下示例 start-instance-refresh 命令。此示例配置了一个实例刷新,它最初刷新 Auto Scaling 组的 20%。在等待 10 分钟后,它会随后刷新该组的其余部分,然后结束操作。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json 的内容:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 80, "CheckpointPercentages": [20,100], "CheckpointDelay": 600 } }

部分刷新 Auto Scaling 组

要仅替换 Auto Scaling 组的一部分,然后完全停止,请使用以下示例 start-instance-refresh 命令。此示例配置了一个实例刷新,它最初刷新 Auto Scaling 组的 1%。在等待 10 分钟后,它会随后刷新接下来的 19%,然后结束操作。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json 的内容:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 80, "CheckpointPercentages": [1,20], "CheckpointDelay": 600 } }