使用控制台更新 Amazon ECS 服务 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用控制台更新 Amazon ECS 服务

您可以使用 Amazon ECS 控制台更新 Amazon ECS 服务。当前服务配置已预先填充。您可以更新任务定义、所需任务计数、容量提供程序策略、平台版本和部署配置;或者这些的任意组合。

有关如何更新蓝绿部署配置的信息,请参阅 使用控制台更新 Amazon ECS 蓝绿部署

使用控制台时请考虑以下事项:

如果要暂时停止服务,则请将所需任务设置为 0。然后,当您准备好启动服务时,请使用最初的所需任务计数更新该服务。

使用控制台时请考虑以下事项:

  • 您必须使用 Amazon Command Line Interface 来更新使用以下任一参数的服务:

    • 蓝/绿部署

    • 服务发现 – 您只能查看您的服务发现配置。

    • 使用自定义指标跟踪策略

    • 更新服务 – 您无法更新 awsvpc 网络配置和运行状况检查宽限期。

    有关如何使用 Amazon CLI 更新服务的信息,请参阅《Amazon Command Line Interface 参考》中的 update-service

  • 如果要在任务定义中更改容器使用的端口,您可能需要更新容器实例的安全组以使用更新后的端口。

  • Amazon ECS 不会自动更新与 Elastic Load Balancing 负载均衡器或 Amazon ECS 容器实例关联的安全组。

  • 如果您的服务使用一个负载均衡器,则无法使用控制台更改创建该负载均衡器时为服务定义的负载均衡器配置。您可以改而使用 Amazon CLI 或开发工具包来修改负载均衡器配置。有关如何修改配置的信息,请参阅《Amazon Elastic Container Service API 参考》中的 UpdateService

  • 如果您更新服务的任务定义,则在负载均衡器中指定的容器名称和容器端口必须保留在任务定义中。

您可以更新现有服务以更改一些服务配置参数,如该服务维护的任务数、任务使用哪个任务定义,或者,如果您的任务使用的是 Fargate 启动类型,也可以更改服务使用的平台版本。使用 Linux 平台版本的服务无法更新为使用 Windows 平台版本,反之亦然。如果您有需要更多容量的应用程序,则可以扩展服务。如果您有要缩减的未使用容量,则可以减少服务中的所需任务的数量并释放资源。

如果要为任务使用更新的容器映像,则可以使用该映像创建新的任务定义修订版本,并使用控制台中的 force new deployment (强制新部署) 选项将其部署到服务。

服务计划程序将使用最小正常百分比和最大百分比参数(在服务的部署配置中)确定部署策略。

如果服务使用滚动更新 (ECS) 部署类型,最小正常百分比以预期任务数的百分比形式表示部署期间必须保持在 RUNNING 状态的服务中的任务数的下限(向上取整到最近的整数)。如果服务包含使用 EC2 启动类型的任务,则在任何容器实例处于 DRAINING 状态时,此参数也适用。可以使用此参数进行部署,而无需使用额外的集群容量。例如,如果您的服务的预期任务数为 4,最小正常百分比为 50%,则计划程序可能在开始两个新任务之前停止两个现有任务以释放集群容量。服务任务的状态如果为 RUNNING,而且未使用负载均衡器,即为运行正常。如果使用负载均衡器的服务任务处于 RUNNING 状态,并且该负载均衡器将其报告为正常,则这些服务任务被视为正常。最小正常百分比的默认值为 100%。

如果服务使用滚动更新 (ECS) 部署类型,则最大百分比参数将以预期任务数的百分比形式(向下取整到最近的整数)表示部署期间允许处于 PENDINGRUNNINGSTOPPING 状态的服务中任务数的上限。如果服务包含使用 EC2 启动类型的任务,则在任何容器实例处于 DRAINING 状态时,此参数也适用。可以使用此参数定义部署批次大小。例如,如果您的服务的预期任务数为 4,最大百分比值为 200%,则计划程序可能在停止 4 个旧任务之前开始 4 个新任务。这样做的前提是具有执行此操作所需的集群资源。最大百分比的默认值为 200%。

当服务计划程序在更新期间替换某个任务时,服务首先会从负载均衡器(如果使用了)中删除此任务并等待连接耗尽。然后,将向此任务中运行的容器发出 docker stop 的等效项。这将产生 SIGTERM 信号和 30 秒的超时,此后,将发送 SIGKILL 并强制停止容器。如果容器正常处理了 SIGTERM 信号并在收到信号后的 30 秒内退出,则不会发送任何 SIGKILL 信号。服务计划程序将启动并停止您的最小正常百分比和最大百分比设置定义的任务。

在容器运行状况检查或负载均衡器目标组运行状况检查失败后,服务计划程序还会替换被确定为运行状况不佳的任务。此替换取决于 maximumPercentdesiredCount 服务定义参数。如果任务被标记为运行状况不佳,则服务计划程序将首先启动替换任务。然后会发生以下情况。

  • 如果替换任务的运行状况为 HEALTHY,则服务计划程序将停止运行不正常的任务

  • 如果替换任务的运行状况为 UNHEALTHY,则计划程序将停止运行状况不佳的替换任务或现有的运行状况不佳任务,以使任务总数等于 desiredCount

如果 maximumPercent 参数限制计划程序先启动替换任务,则计划程序将一次随机停止一个运行状况不佳的任务以释放容量,然后启动替换任务。启动和停止过程将继续,直到所有运行状况不佳的任务都被运行状况正常的任务所替换。替换了所有运行状况不佳的任务并且只有运行正常的任务后,如果任务总数超过 desiredCount,则会随机停止运行状况正常的任务,直到任务总数等于 desiredCount。有关 maximumPercentdesiredCount 的更多信息,请参阅服务定义参数

重要

如果要在任务定义中更改容器使用的端口,您可能需要更新容器实例的安全组以使用更新后的端口。

如果您更新服务的任务定义,则创建服务时指定的容器名称和容器端口必须保留在任务定义中。

Amazon ECS 不会自动更新与 Elastic Load Balancing 负载均衡器或 Amazon ECS 容器实例关联的安全组。

更新服务(Amazon ECS 控制台)
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. Clusters(集群)页面上,选择集群。

  3. 在集群详细信息页面上的服务部分,选中服务旁边的复选框,然后选择更新

  4. 要让您的服务开始新的部署,请选择 Force new deployment(强制执行新部署)。

  5. 对于任务定义,选择任务定义系列和修订。

    重要

    控制台验证所选任务定义系列和修订与定义的计算配置兼容。如果收到警告,请验证任务定义兼容性和您选择的计算配置。

  6. 对于预期任务,请输入要为服务运行的任务数量。

  7. 对于Min running tasks(最小运行任务数),输入服务中在部署期间必须保持 RUNNING 状态的任务数的下限,以所需任务数的百分比表示(四舍五入到最接近的整数)。有关更多信息,请参阅部署配置

  8. 对于 Max running tasks(最大运行任务数),输入部署期间 RUNNINGPENDING 状态下允许的服务中任务数的上限,以所需任务数的百分比表示(四舍五入到最接近的整数)。

  9. 要配置 Amazon ECS 如何检测和处理部署故障,请展开 Deployment failure detection(部署故障检测),然后选择您的选项。

    1. 要在任务无法启动时停止部署,请选择 Use the Amazon ECS deployment circuit breaker(使用 Amazon ECS 部署断路器)。

      要让软件在部署断路器将部署设置为故障状态时自动将部署回滚到上次完成的部署状态,请选择故障时回滚

    2. 要根据应用程序指标停止部署,请选择使用 CloudWatch 警报。然后,从 CloudWatch 警报名称中选择警报。要创建新报警,请转到 CloudWatch 控制台。

      要让软件在 CloudWatch 警报将部署设置为故障状态时自动将部署回滚到上次完成的部署状态,请选择故障时回滚

  10. 要更改计算选项,请展开计算配置,然后执行以下操作:

    1. 对于 Amazon Fargate 上的服务,请在 Platform version(平台版本)中选择新版本。

    2. 对于使用容量提供程序策略的服务,请对容量提供程序策略执行以下操作:

      • 要添加其他容量提供程序,请选择添加更多。然后,对于容量提供程序,请选择容量提供程序。

      • 要移除容量提供程序,请在容量提供商程序的右侧选择删除

      使用自动扩缩组容量提供程序的服务无法更新为使用 Fargate 容量提供程序。使用 Fargate 容量提供程序的服务无法更新为使用自动扩缩组容量提供程序。

  11. (可选)要配置服务自动扩缩,请展开服务自动扩缩,然后指定以下参数。

    1. 要使用服务自动扩缩,请选择 Service auto scaling(服务自动扩缩)。

    2. 对于最小任务数,输入供服务自动扩缩使用的任务数的下限。所需计数不会低于此计数。

    3. 对于最大任务数,输入供服务自动扩缩使用的任务数的上限。所需计数不会高于此计数。

    4. 选择策略类型。在扩展策略类型下,选择以下选项之一。

      使用此策略类型 请执行该操作

      目标跟踪

      1. 对于 Scaling policy type (扩展策略类型) 选择 Target tracking (目标跟踪)。

      2. 对于 Policy name(策略名称),请输入策略的名称。

      3. 对于 ECS 服务指标,选择以下指标之一。

        • ECSServiceAverageCPUUtilization – 服务的平均 CPU 使用率。

        • ECSServiceAverageMemoryUtilization – 服务的平均内存使用率。

        • ALBRequestCountPerTarget – 应用程序负载均衡器目标组中每个目标完成的请求数。

      4. 对于 Target value(目标值),输入服务为所选指标保留的值。

      5. 对于横向扩展冷却时间,输入一个横向扩展活动(添加任务)结束后,在另一个横向扩展活动启动之前必须经过的时间量(以秒为单位)。

      6. 对于横向缩减冷却时间,输入一个横向缩减活动(删除任务)结束后,在另一个横向缩减活动启动之前必须经过的时间量(以秒为单位)。

      7. 要防止策略执行缩减活动,请选择 Turn off scale-in(关闭横向缩减)。

      8. •(可选)如果您希望扩展策略针对增加的流量进行横向扩展,但不需要在流量减少时横向缩减,请选择关闭横向缩减

      分步扩缩
      1. 对于 Scaling policy type (扩展策略类型) 选择 Step scaling (分步扩展)。

      2. 对于策略名称,请输入策略的名称。

      3. 对于 Alarm name (警报名称),为警报输入一个唯一名称。

      4. 对于 Amazon ECS 服务指标,选择要用于警报的指标。

      5. 对于统计信息,请选择警报统计信息。

      6. 对于周期,选择警报的周期。

      7. 对于警报条件,请选择如何将所选指标与定义的阈值进行比较。

      8. 用于比较指标的阈值启动警报的评估周期中,请输入用于警报的阈值和评估阈值的时长。

      9. 扩展操作下,执行以下操作:

        • 对于操作,选择是否为您的服务增加、删除或设置具体预期数量。

        • 如果您选择增加或删除任务,对于,请输入启动扩展操作后要增加或删除的任务数(或现有任务的百分比)。如果您选择设置了所需的数量,则请输入任务数量。在类型中,选择是整数还是现有所需计数的百分比值。

        • 对于下限上限,输入分步扩展调整的下限和上限。默认情况下,添加策略的下限为警报阈值,上限为正 (+) 无穷。默认情况下,移除策略的上限为警报阈值,下限为负 (-) 无穷。

        • (可选)添加其他扩展选项。选择添加新的扩展操作,然后重复扩展操作步骤。

        • 对于冷却时间,输入等待先前的扩展活动生效的时间(以秒为单位)。对于添加策略,该时间是在横向扩展活动之后,扩展策略阻止横向缩减活动并限制一次可以横向扩展的任务数量的时间。对于移除策略,该时间是横向缩减活动结束后,在另一个横向缩减活动可以开始前经过的时间。

  12. (可选)要使用 Service Connect,请选择 Turn on Service Connect(开启 Service Connect),然后指定以下内容:

    1. Service Connect configuration(Service Connect 配置)下,指定客户端模式。

      • 如果您的服务运行的网络客户端应用程序只需要连接到命名空间中的其他服务,请选择 Client side only(仅限客户端)。

      • 如果您的服务运行网络或 Web 服务应用程序且需要为该服务提供端点并连接到命名空间中的其他服务,请选择 Client and server(客户端和服务器)。

    2. 要使用默认集群命名空间以外的命名空间,对于 Namespace(命名空间),请选择服务命名空间。

  13. 如果您的任务使用的数据卷与部署时的配置兼容,则可以通过扩展来配置该卷。

    卷名称和卷类型在您创建任务定义修订时配置,在更新服务时无法更改。要更新卷名称和类型,您必须创建新的任务定义修订并使用新修订更新服务。

    要配置此卷类型 请执行该操作

    Amazon EBS

    1. EBS 卷类型选择要附加到任务的 EBS 卷的类型。

    2. 大小(GiB)输入卷大小的有效值,以吉字节(GiB)为单位。您可以指定最小 1GiB 和最大 16384GiB 的卷大小。除非您提供快照 ID,否则此值为必填值。

    3. 对于 IOPS,输入该卷应提供的输入/输出操作的次数(IOPS)的最大值。此值只能针对 io1io2gp3 卷类型进行配置。

    4. 对于吞吐量(MiB/s),以每秒兆字节(MiBps 或 MiB/s)为单位输入卷应提供的吞吐量。此值只能针对 gp3 卷类型进行配置。

    5. 对于快照 ID,请选择现有的 Amazon EBS 卷快照,或者如果您想从快照中创建卷,请输入快照的 ARN。您还可以通过不选择或输入快照 ID 来创建新的空卷。

    6. 对于文件系统类型,请选择将用于在卷上数据存储和检索的文件系统的类型。您可以选择操作系统默认类型或特定的文件系统类型。Linux 的默认设置为 XFS。对于从快照创建的卷,必须指定创建快照时卷使用的相同文件系统类型。如果文件系统类型不匹配,则任务将无法启动。

    7. 对于基础设施角色,请选择一个具有必要权限的 IAM 角色,以允许 Amazon ECS 管理任务的 Amazon EBS 卷。您可以将 AmazonECSInfrastructureRolePolicyForVolumes 托管策略附加到该角色,也可以使用策略作为指南,以创建并附加您自己的具有满足您特定需求的权限的策略。有关必要权限的更多信息,请参阅Amazon ECS 基础设施 IAM 角色

    8. 对于加密,如果您想使用 Amazon EBS 默认加密设置,则请选择默认。如果您的账户配置了默认加密,则该卷将使用设置中指定的 Amazon Key Management Service(Amazon KMS)密钥进行加密。如果您选择默认,但未开启 Amazon EBS 默认加密,则该卷将处于未加密状态。

      如果选择自定义,则可以为卷加密指定您选择的 Amazon KMS key。

      如果选择,则除非您配置了加密,或者您使用加密的快照创建了卷,否则该卷将处于未加密状态。

    9. 如果您选择了自定义作为加密,则必须指定要使用的 Amazon KMS key。为 KMS 密钥选择 Amazon KMS key 或输入密钥 ARN。如果您选择使用对称的客户托管密钥对卷进行加密,请确保您拥有 Amazon KMS key 策略中定义的正确权限。有关更多信息,请参阅 Amazon EBS 卷的数据加密

    10. (可选)在标签下,您可以通过传播任务定义或服务中的标签或提供自己的标签来将标签添加到 Amazon EBS 卷中。

      如果您要传播任务定义中的标签,请为从中传播标签选择任务定义。如果要从服务中传播标签,则请为传播标签来源选择服务。如果您选择不传播,或者如果您未选择值,则不会传播标签。

      如果您想提供自己的标签,请选择添加标签,然后为您添加的每个标签提供密钥和值。

      有关标记 Amazon EBS 卷的更多信息,请参阅标记 Amazon EBS 卷

  14. (可选)为了帮助识别您的服务,请展开 Tags(标签)部分,然后配置您的标签。

    • [添加标签] 选择添加标签,然后执行以下操作:

      • 对于 Key(键),输入键名称。

      • 对于,输入键值。

    • [删除标签] 在标签旁,选择 Remove tag (删除标签)

  15. 选择更新