执行基础设施更新 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

执行基础设施更新

基础设施更新会将计算环境中的实例替换为具有更新后设置的新实例。此更新策略需要的时间比扩缩更新更长,并且需要特定的服务角色和分配策略设置。基础设施更新是一种在保持服务可用性的同时修改基本计算环境配置的方法。

重要

基础设施更新需要 AWSServiceRoleForBatch 服务相关角色以及 BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDSPOT_PRICE_CAPACITY_OPTIMIZED 分配策略。如果您的环境不符合这些要求,请改用蓝绿更新。

触发基础设施更新的更改

当您修改以下任何设置时,Amazon Batch 将执行基础设施更新。当您同时修改这些设置以及扩缩更新设置时,也会执行基础设施更新。

以下设置会触发基础设施更新:

计算配置

  • allocationStrategy:确定 Amazon Batch 将如何选择实例类型。

  • instanceTypes:指定要使用的 EC2 实例类型。

  • bidPercentage:竞价型实例的最大按需价格百分比。

  • type:计算环境类型(EC2SPOT)。

AMI 和启动配置

  • imageId:要用于实例的特定 AMI。

  • ec2Configuration:EC2 配置,包括 imageIdOverride

  • launchTemplate:EC2 启动模板设置。

  • ec2KeyPair:用于实例访问的 SSH 密钥对。

  • updateToLatestImageVersion:AMI 自动更新设置。

网络和安全性

  • subnets:所启动的实例的 VPC 子网(适用于 EC2 计算环境)。

  • securityGroupIds:实例的安全组(适用于 EC2 计算环境)。

  • placementGroup:EC2 置放群组配置。

其他设置

  • instanceRole:用于 EC2 实例的 IAM 角色。

  • tags:应用到 EC2 实例的标签。

重要

如果您修改了任何基础设施更新设置以及扩缩更新设置(例如 desiredvCpusmaxvCpus、或 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 来自启动模板,则更新imageIdimageIdOverride设置都不会更新 AMI ID。更新从启动模板中选择的 AMI ID 的唯一方法是更新启动模板。如果启动模板的版本参数为$Default$Latest,则会评估指定启动模板的默认版本或最新版本。如果默认选择了不同的 AMI ID 或选择了最新版本的启动模板,则将在更新中使用该 AMI ID。

如果未使用启动模板来选择 AMI ID,则会使用imageIdimageIdOverride参数中指定的 AMI ID。如果同时指定了这两个参数,则会使用imageIdOverride参数中指定的 AMI ID。

假设计算环境使用由imageIdimageIdOverridelaunchTemplate参数指定的 AMI ID,并且要使用由Amazon Batch支持的最新 Amazon ECS 优化 AMI。然后,更新必须删除提供 AMI ID 的设置。对于imageId,需要为该参数指定一个空字符串。对于imageIdOverride,需要为ec2Configuration参数指定一个空字符串。

如果 AMI ID 来自启动模板,则可以通过以下任一方法更改为Amazon Batch支持的最新 Amazon ECS 优化 AMI:

  • 通过为launchTemplateIdlaunchTemplateName参数指定一个空字符串,删除启动模板。这将删除整个启动模板,而不仅仅是 AMI ID。

  • 如果启动模板的更新版本未指定 AMI ID,则必须将updateToLatestImageVersion参数设置为true

更新期间的作业处理

使用更新策略配置在基础设施更新期间如何处理正在运行的作业。如果设置为 terminateJobsOnUpdate=true,则正在运行的作业将立即终止,jobExecutionTimeoutMinutes 设置将被忽略,并且更新将在可以替换实例时立即继续执行。如果设置为 terminateJobsOnUpdate=false,则正在运行的作业将在指定的超时期限内继续运行,默认超时期限为 30 分钟,超过超时期限的作业将被终止。

注意

要重试在更新期间被终止的作业,请配置作业重试策略。有关更多信息,请参阅 自动作业重试

Performing infrastructure updates using the Amazon Web Services 管理控制台
  1. 打开Amazon Batch控制台,地址:https://console.aws.amazon.com/batch/

  2. 在导航窗格中,选择环境,然后选择计算环境选项卡。

  3. 选择要更新的计算环境。

  4. 选择操作,然后选择编辑

  5. 更新行为部分中,配置如何处理正在运行的作业:

    • 选择将 AMI 更新到最新版本,以将 AMI 更新为最新版本。

    • 选择更新时立即终止作业,以在更新进程运行时终止作业。

    • 对于作业执行超时,输入在更新进程启动之前要等待的分钟数。

  6. 修改一项或多项要求使用基础设施更新的设置。例如:

    • 实例角色

    • 使用 EC2 竞价型实例

    • 允许的实例类型

    • 置放群组 ()

    • EC2 密钥对

    • EC2 配置 ()

    • 启动模板

    • 子网

    • 安全组

  7. 选择保存更改

  8. 监控计算环境状态。环境将在更新过程中显示 UPDATING 状态。

Performing infrastructure updates using the Amazon CLI

使用 update-compute-environment 命令并更改一项或多项要求使用基础设施更新的设置。以下三个示例是常见的基础设施操作。

  • 此示例会更新实例类型并配置更新策略:

    aws batch update-compute-environment \ --compute-environment your-compute-environment-name \ --compute-resources instanceTypes=default_x86_64 \ --update-policy terminateJobsOnUpdate=false,jobExecutionTimeoutMinutes=30
  • 此示例会更新 VPC 子网和安全组:

    aws batch update-compute-environment \ --compute-environment your-compute-environment-name \ --compute-resources subnets=subnet-abcd1234,subnet-efgh5678 securityGroupIds=sg-abcd1234 \ --update-policy terminateJobsOnUpdate=true
  • 此示例会自动更新到最新版本的 Amazon ECS 优化型 AMI:

    aws batch update-compute-environment \ --compute-environment your-compute-environment-name \ --compute-resources updateToLatestImageVersion=true \ --update-policy terminateJobsOnUpdate=false,jobExecutionTimeoutMinutes=60

监控基础设施更新

使用 Amazon Batch 控制台监控基础设施更新,以观察计算环境的状态变为 UPDATING,监控实例替换进度,并检查是否有任何失败的更新。一旦计算环境状态变为 VAILD,即表示更新成功。您还可以使用 CloudWatch 来跟踪实例终止事件并在更新期间监控作业状态。使用 Amazon CLI 时,请使用 describe-compute-environments 命令来检查状态和监控实例生命周期事件。