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

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

执行基础架构更新

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

重要

基础架构更新需要AWSServiceRoleForBatch服务相关角色和BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZED、或SPOT_PRICE_CAPACITY_OPTIMIZED的分配策略。如果您的环境不符合这些要求,请改用 blue/green 更新。

触发基础架构更新的更改

修改以下任何设置时,将 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 可能会发生变化,具体取决于 AMIs 是否在这三个设置中指定。 AMIs 在imageId(incomputeResources)、imageIdOverride(in)或中ec2Configuration指定的启动模板中指定launchTemplate。假设在这些设置中 IDs 均未指定 AMI,且updateToLatestImageVersion设置为true。然后,将支持的最新 Amazon ECS 优化 Amazon Batch 的 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 的设置 IDs。对于imageId,需要为该参数指定一个空字符串。对于imageIdOverride,需要为ec2Configuration参数指定一个空字符串。

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

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

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

更新期间的 Job 处理

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

注意

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

Performing infrastructure updates using the Amazon Web Services Management Console
  1. 打开 Amazon Batch 控制台,网址为https://console.aws.amazon.com/batch/

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

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

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

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

    • 选择 “将 AMI 更新到最新版本”,将 AMI 更新到最新版本。

    • 选择 “更新时立即终止作业”,以便在更新过程运行时终止作业。

    • 对于 Job 执行超时,输入开始更新过程之前等待的分钟数。

  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命令来检查状态和监控实例生命周期事件。