View a markdown version of this page

Amazon ECS 服务扩展执行块 - Amazon 应用程序恢复控制器(ARC)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

Amazon ECS 服务扩展执行块

作为多区域恢复过程的一部分,您可以利用 ECS 服务扩展执行块在目标区域扩展您的 ECS 服务。您可以定义相对于区域切换从中失效转移的或停用的区域的容量百分比。

配置

要配置 ECS 服务扩展执行块,输入以下值。

重要

在配置执行块之前,请确保计划的执行角色具有正确的 IAM 策略。有关更多信息,请参阅 Amazon ECS 服务扩展执行块示例策略。

  1. 步骤名称:输入名称。

  2. 步骤描述(可选):输入步骤的描述。

  3. 区域资源:对于每个区域,输入 ECS 集群 ARN 和 ECS 服务 ARN。

  4. 与来源区域任务量相匹配的百分比:输入来源区域中所需的运行任务数量百分比,以匹配激活区域。

  5. 容量监控方法:选择以下方法之一来监控 Amazon ECS 的容量:

    • 24 小时内采样的最大运行容量:选择此选项可使用您的 Amazon ECS 服务中的正在运行的任务数量值。此选项不会产生额外成本,但可能不如使用其他选项( CloudWatch 指标)那么准确。

      在区域切换 API 中,此选项对应于指定 sampledMaxInLast24Hours。

      有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的自动扩展 Amazon ECS 服务。

    • 通过 Container Insights 在 24 小时内采样的最大运行容量:选择此选项可使用 Amazon ECS Container Insights 指标。使用该选项可能更准确,但使用 Container Insights 指标会产生额外费用。

      在区域切换 API 中,此选项对应于指定 autoscalingMaxInLast24Hours。

      要使用此选项,您必须先启用 Container Insights。有关更多信息,请参阅《Amazon CloudWatch 用户指南》中的 “设置容器见解”。

  6. 等待目标组运行状况:选择区域切换是否等待 ECS 服务的任务在其关联的 Elastic Load Balancing 目标组中变为正常状态后再完成该步骤。

    • 启用后,区域切换将在扩展容量后检查目标群组的运行状况。在每个关联的目标组都将所需的任务数量报告为之前,区域切换不会继续执行下一步healthy。所需的任务数是 Region switch 为该步骤计算的所需计数,与缩放时等待的计数相同。

    • 禁用后,该步骤将在目标服务达到其所需的运行任务数后立即完成,无需检查目标组的运行状况。

    在区域切换 API 中,此选项对应于指定waitELBTargetGroupHealthy为enabled或disabled。

  7. 超时:输入超时值。

然后,选择保存步骤。

工作原理

区块运行时,Region switch 会读取源区域在过去 24 小时内的最大运行任务数,该计数由您选择的容量监控方法进行衡量。它使用公式计算目标ceil(percentToMatch * source task count),其中 ceil () 使用服务所需的计数作为容量,将任何分数结果四舍五入。然后,它会扩展目标服务以匹配此计数。仅当目标服务的当前所需数量小于计算的目标时,区域切换才会扩大目标服务的规模。如果当前所需的计数已经大于或等于目标,则在不缩放的情况下继续执行(区域切换永远不会缩小)。如果服务启用了 Application Auto Scaling,则区域切换会更新 Application Auto Scaling 中的最小容量以及所需的数量。此计算适用于 active/passive 和 active/active 计划。

源容量始终是其他区域的容量。在 active/active 计划中,区域切换使用另一个配置的区域作为激活和停用工作流程的来源。

在继续下一步之前,区域切换会等到目标服务所需的计数得到满足。启用等待目标组运行状况时,区域切换将在目标服务达到所需计数后检查目标组的运行状况。它读取附加到服务的 Elastic Load Balancing 目标组,并轮询其运行状况,直到每个附加的目标组都将所需的任务数报告为healthy。无论是否进行了扩展,都会进行此检查,因此,即使服务已经达到所需的计数,区域切换也会在完成该步骤之前验证目标组的运行状况。对于不雅的执行,它会等待任务计数的最小百分比达到。healthy

只有当任务属于该服务且其匹配的目标组条目为时,该任务才计入健康总数healthy。区域切换如何识别服务的任务取决于网络模式:

  • 在awsvpc模式下,Amazon ECS 通过其任务 ENI IP 地址注册每个任务。区域切换根据目标组的地址类型按其 IPv4 或 IPv6 地址匹配每项任务。

  • 在bridge或host模式下,Amazon ECS 通过其容器实例和为容器映射的主机端口来注册每个任务。区域切换将容器实例的 EC2 实例 ID 与该主机端口相匹配。

只有在每个关联目标组中所有必需的任务都运行正常后,该步骤才会完成。如果服务没有负载均衡器,则区域切换会跳过检查并完成该步骤。如果所需任务在超时之前没有恢复正常,则该步骤将失败。

注意

等待目标组运行状况选项仅支持 Application Load Balancer (ALB) 和网络负载均衡器 (NLB) 目标组。它不支持 Classic Load Balancer。如果您的 ECS 服务仅使用 Classic Load Balancer,则启用此选项无效。

该区块支持优雅和不雅的执行。对于不雅的执行,在继续切换区域之前,您需要指定目标区域中要匹配的源区域任务计数的最小百分比。您在执行块中指定的百分比,或者作为不正常执行的最低百分比,适用于缩放和等待目标组生命值。