在实例刷新期间更换根卷 - Amazon A EC2 uto Scaling

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

在实例刷新期间更换根卷

工作原理

根卷替换通过在保持实例运行的同时仅替换根 EBS 卷来更新您的实例。这样就无需启动新实例,也避免了潜在的容量限制。此过程会保留所有其他实例资源,包括:

  • 网络接口和 IP 地址

  • 非根 EBS 卷

  • 实例存储卷和数据

  • 安全组和 IAM 角色

在更换根卷期间,您的应用程序将继续在现有实例上运行。将分离原始根卷,从您指定的 AMI 创建新的根卷,然后连接到同一个实例。成功替换后,原始根卷将自动删除。

当您使用替换根卷策略时,实例会经历以下生命周期状态:

  1. ReplacingRootVolume-开始更换根卷

  2. ReplacingRootVolume:Wait-等待生命周期挂钩完成(如果已配置)

  3. ReplacingRootVolume:Proceed-继续进行更换

  4. RootVolumeReplaced-成功完成更换

根卷替换完成后,Auto Scaling 会对更新的实例进行运行状况检查。如果某个实例的根卷更换失败,Auto Scaling 会将该实例标记为终止,并将其替换为新实例。

要求

  • 您的 Auto Scaling 组必须使用混合实例策略

  • 混合实例策略中的所有替代项都必须指定 ImageId

  • AMIs 必须只包含一个根卷

  • 所有实例都必须与该组的启动模板配置相匹配

  • 您必须使用包含ImageId覆盖的混合实例策略的所需配置开始实例刷新。

使用 “替换根卷” 开始实例刷新

使用 “替换根卷” (AWS CLI) 开始刷新实例

使用以下start-instance-refresh命令从启动实例刷新 AWS CLI。您可以在 JSON 配置文件中指定要更改的任何首选项。引用配置文件时,请提供该文件的路径和名称,如以下示例所示。

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

config.json 的内容:

{ "AutoScalingGroupName": "my-asg", "Strategy" : "ReplaceRootVolume", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateId":"my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType":"c5.large", "ImageId":"ami-1234example" }, { "InstanceType":"m5.large", "ImageId":"ami-2345example" } ] } } }, "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 90, "AutoRollback": true, "ScaleInProtectedInstances": Ignore, "StandbyInstances": Ignore } }

如果不提供首选项,则会使用默认值。有关更多信息,请参阅 了解实例刷新的默认值

输出示例:

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

限制

  • 如果 A EC2 uto Scaling 组或所需的实例刷新配置使用$Latest$Default启动模板版本,则无法使用替换根卷启动实例刷新。

  • 如果 Amazon A EC2 uto Scaling 组包含的实例类型不在混合实例策略中,则无法使用替换根卷启动实例刷新。

  • 在使用 Replace Root Volume 刷新实例期间,您只能连接所需配置的混合实例策略中存在的类型的实例。

  • 在具有温池的 A EC2 uto Scaling 组上,您无法使用替换根卷来启动实例刷新。

  • 您无法使用替换根卷向具有活动实例刷新的 Amazon A EC2 uto Scaling 组添加温池。