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

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

将检查点添加到实例刷新

使用实例刷新时,您可以选择在一个连续操作中替换整个 Auto Scaling 组。但是,您可能更愿意分阶段替换组,以便您可以随时对实例执行验证。要执行分阶段替换,请添加检查点,这些检查点是实例刷新暂停的时间点。使用检查点可以更好地控制选择更新 Auto Scaling 组的方式,并有助于确保应用程序以可靠、可预测的方式运行。

要为实例刷新启用检查点,请将以下刷新首选项添加到定义实例刷新参数的配置文件中,当您使用Amazon CLI:

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

  • CheckpointDelay:在达到检查点后再继续操作的时间(单位:秒)。选择允许您有足够时间执行验证的时间段。

需要成功替换的 Auto Scaling 组的百分比由CheckpointPercentages数组。该操作不会转换到Successful,直到成功替换该组的此百分比,并且每个实例都已加热并准备好再次开始为流量提供服务。

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

设置实例刷新检查点首选项(console)

您可以在首选项中配置实例刷新的检查点。

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

  1. 打开 Amazon EC2 Auto Scaling 控制台:以下网址:https://console.aws.amazon.com/ec2autoscaling/.

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

    将在窗格底部打开一个拆分窗格。Auto Scaling 组页.

  3. 实例刷新选项卡上的实例刷新中,选择启动实例刷新

  4. 启动实例刷新对话框中,为最低健康百分比实例预热.

  5. 选择使用检查点启用实例刷新”复选框。

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

  6. 要为第一个检查点设置百分比,请在继续操作,直到刷新组的 ____%.

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

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

  9. 选择 Start (开始)

设置实例刷新检查点首选项 (Amazon CLI)

创建多个检查点

要创建多个检查点,请使用以下示例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": 400, "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": 400, "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": 400, "MinHealthyPercentage": 80, "CheckpointPercentages": [1,20], "CheckpointDelay": 600 } }

关于检查点的关键点

以下是关于使用检查点的关键要点:

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

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

    例如,假设您的 Auto Scaling 组有 10 个实例,并进行以下替换。您的检查点百分比为[20,50]检查站延迟 15 分钟, 健康百分比至少为 80%.

    • 0:00:2 个旧实例被替换。

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

    • 0:25:2 个旧实例被替换。仅替换两个实例以保持最低运行状况百分比。

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

    • 0:35:1 个旧实例被替换。

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

    在 0:35 时,该操作将停止启动新实例,即使完成百分比尚未准确反映在 50% 完成的替换次数,直到 10 分钟后新实例完成其预热期。

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

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

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

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