基于最大实例生命周期替换 Auto Scaling 实例 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

基于最大实例生命周期替换 Auto Scaling 实例

最大实例生命周期指定实例在终止和替换之前可提供服务的最长时间(以秒为单位)。由于内部安全策略或外部合规性控制,常见使用案例可能需要按计划替换您的实例。

您必须指定至少 86,400 秒(一天)的值。要清除以前设置的值,请指定新值 0。此设置适用于 Auto Scaling 组中的所有当前和未来实例。

注意事项

以下是使用此功能时的注意事项:

  • 每当替换旧实例并启动新实例时,新实例都会使用当前与自动扩缩组关联的启动模板或启动配置。如果您的启动模板或启动配置指定了不同版本应用程序的 Amazon 系统映像 (AMI) ID,则该版本的应用程序将自动部署。

  • 将实例的最大生命周期设置得过低可能会导致更换实例的速度超过预期的速度。Amazon EC2 Auto Scaling 通常会一次替换一个实例,在替换之间会有暂停时间。但是,如果指定的最大实例寿命不能提供足够的时间来单独替换每个实例,那么 Amazon EC2 Auto Scaling 必须一次替换多个实例。可能会一次替换多个实例,最多可达 Auto Scaling 组当前容量的 10%。为避免一次替换太多实例,请设置更长的实例最大生命周期,或者使用实例缩减保护来暂时防止单个实例被终止。有关更多信息,请参阅 实例横向缩减保护

  • 默认情况下,Amazon EC2 Auto Scaling 会创建用于终止实例的新扩展活动,然后终止该实例。在实例终止期间,另一个扩缩活动将会启动一个新实例。您可以使用实例维护策略将此行为更改为在终止前启动。有关更多信息,请参阅 实例维护策略

设置最大实例生命周期

在控制台中创建 Auto Scaling 组时,您将无法设置最大实例生命周期。但在创建该组后,您就可以对其进行编辑,以设置最大实例生命周期。

为组设置最大实例生命周期(控制台)
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

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

    将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格,其中显示有关您选择的组的信息。

  3. Details(详细信息)选项卡上,选择 Advanced configurations(高级配置)、Edit(编辑)。

  4. 对于 Maximum instance lifetime (最大实例生命周期),输入实例可使用的最长秒数。

  5. 选择更新

Activity(活动)选项卡上的 Activity history(活动历史记录)下,您可以通过其整个历史记录查看该组中实例的替换情况。

为组设置最大实例生命周期 (Amazon CLI)

您还可以使用 Amazon CLI 为新的或现有 Auto Scaling 组设置最长实例生命周期。

对于新的 Auto Scaling 组,请使用create-auto-scaling-group命令。

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

以下示例 config.json 文件显示的最长实例生命周期为 2592000 秒(30 天)。

{ "AutoScalingGroupName": "my-asg", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "MinSize": 1, "MaxSize": 5, "MaxInstanceLifetime": 2592000, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }

对于现有的 Auto Scaling 组,请使用update-auto-scaling-group命令。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-existing-asg --max-instance-lifetime 2592000
验证 Auto Scaling 组的最大实例生命周期

使用 describe-auto-scaling-groups 命令。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

限制

  • 不能保证每个实例的最大生命周期都是准确的:不能保证仅在实例最大持续时间结束时替换实例。在某些情况下,Amazon EC2 Auto Scaling 可能需要在您更新最大实例生命周期参数后立即开始替换实例。此行为的原因是避免同时替换所有实例。

  • 支持@@ 实例缩容保护:Amazon EC2 Auto Scaling 提供实例缩减保护,以帮助您控制可以终止哪些实例。在实例上启用此保护后,即使该实例已达到其最大实例生命周期,Amazon EC2 Auto Scaling 也不会终止该实例。

  • 实例在启动前终止:当自动扩缩组中只有一个实例时,最大实例生命周期功能可能会导致中断,因为默认情况下 Amazon EC2 Auto Scaling 会终止实例,然后启动新实例。要将此行为更改为在终止前启动,请参阅 实例维护策略