本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
执行基础设施更新
基础设施更新会将计算环境中的实例替换为具有更新后设置的新实例。此更新策略需要的时间比扩缩更新更长,并且需要特定的服务角色和分配策略设置。基础设施更新是一种在保持服务可用性的同时修改基本计算环境配置的方法。
重要
基础设施更新需要 AWSServiceRoleForBatch 服务相关角色以及 BEST_FIT_PROGRESSIVE、SPOT_CAPACITY_OPTIMIZED 或 SPOT_PRICE_CAPACITY_OPTIMIZED 分配策略。如果您的环境不符合这些要求,请改用蓝绿更新。
触发基础设施更新的更改
当您修改以下任何设置时,Amazon Batch 将执行基础设施更新。当您同时修改这些设置以及扩缩更新设置时,也会执行基础设施更新。
以下设置会触发基础设施更新:
计算配置
-
allocationStrategy:确定 Amazon Batch 将如何选择实例类型。 -
instanceTypes:指定要使用的 EC2 实例类型。 -
bidPercentage:竞价型实例的最大按需价格百分比。 -
type:计算环境类型(EC2或SPOT)。
AMI 和启动配置
-
imageId:要用于实例的特定 AMI。 -
ec2Configuration:EC2 配置,包括imageIdOverride。 -
launchTemplate:EC2 启动模板设置。 -
ec2KeyPair:用于实例访问的 SSH 密钥对。 -
updateToLatestImageVersion:AMI 自动更新设置。
网络和安全性
-
subnets:所启动的实例的 VPC 子网(适用于 EC2 计算环境)。 -
securityGroupIds:实例的安全组(适用于 EC2 计算环境)。 -
placementGroup:EC2 置放群组配置。
其他设置
-
instanceRole:用于 EC2 实例的 IAM 角色。 -
tags:应用到 EC2 实例的标签。
重要
如果您修改了任何基础设施更新设置以及扩缩更新设置(例如 desiredvCpus、maxvCpus、或 minvCpus),则 Amazon Batch 会执行基础设施更新。基础设施更新需要是时间比扩缩更新更长。
基础设施更新期间的 AMI 选择
在基础架构更新期间,计算环境的 AMI ID 可能会发生变化,这取决于是否在上述三种设置中的任何一种中指定了 AMI。AMI 在imageId(在computeResources)、imageIdOverride(在ec2Configuration)中指定,或者在launchTemplate指定的启动模板中指定。假设这些设置中都没有指定 AMI ID,且updateToLatestImageVersion设置是true。然后,Amazon Batch支持的最新 Amazon ECS 优化 AMI 将用于任何基础架构更新。
如果至少在其中一个设置中指定了 AMI ID,则更新将取决于提供了更新前使用的 AMI ID 的设置。创建计算环境时,选择 AMI ID 的优先级首先是启动模板,然后是imageId设置,最后是imageIdOverride设置。但是,如果使用的 AMI ID 来自启动模板,则更新imageId或imageIdOverride设置都不会更新 AMI ID。更新从启动模板中选择的 AMI ID 的唯一方法是更新启动模板。如果启动模板的版本参数为$Default或$Latest,则会评估指定启动模板的默认版本或最新版本。如果默认选择了不同的 AMI ID 或选择了最新版本的启动模板,则将在更新中使用该 AMI ID。
如果未使用启动模板来选择 AMI ID,则会使用imageId或imageIdOverride参数中指定的 AMI ID。如果同时指定了这两个参数,则会使用imageIdOverride参数中指定的 AMI ID。
假设计算环境使用由imageId、imageIdOverride或launchTemplate参数指定的 AMI ID,并且要使用由Amazon Batch支持的最新 Amazon ECS 优化 AMI。然后,更新必须删除提供 AMI ID 的设置。对于imageId,需要为该参数指定一个空字符串。对于imageIdOverride,需要为ec2Configuration参数指定一个空字符串。
如果 AMI ID 来自启动模板,则可以通过以下任一方法更改为Amazon Batch支持的最新 Amazon ECS 优化 AMI:
-
通过为
launchTemplateId或launchTemplateName参数指定一个空字符串,删除启动模板。这将删除整个启动模板,而不仅仅是 AMI ID。 -
如果启动模板的更新版本未指定 AMI ID,则必须将
updateToLatestImageVersion参数设置为true。
更新期间的作业处理
使用更新策略配置在基础设施更新期间如何处理正在运行的作业。如果设置为 terminateJobsOnUpdate=true,则正在运行的作业将立即终止,jobExecutionTimeoutMinutes 设置将被忽略,并且更新将在可以替换实例时立即继续执行。如果设置为 terminateJobsOnUpdate=false,则正在运行的作业将在指定的超时期限内继续运行,默认超时期限为 30 分钟,超过超时期限的作业将被终止。
注意
要重试在更新期间被终止的作业,请配置作业重试策略。有关更多信息,请参阅 自动作业重试。
监控基础设施更新
使用 Amazon Batch 控制台监控基础设施更新,以观察计算环境的状态变为 UPDATING,监控实例替换进度,并检查是否有任何失败的更新。一旦计算环境状态变为 VAILD,即表示更新成功。您还可以使用 CloudWatch 来跟踪实例终止事件并在更新期间监控作业状态。使用 Amazon CLI 时,请使用 describe-compute-environments 命令来检查状态和监控实例生命周期事件。