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

使用新控制台更新服务

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

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

  • 只有使用 Rolling update(滚动更新)(ECS)部署类型的服务才可以使用新控制台进行更新。

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

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

  • 如果您的服务使用一个负载均衡器,则无法更改创建该负载均衡器时为服务定义的负载均衡器配置。如果您更新服务的任务定义,则创建服务时指定的容器名称和容器端口必须保留在任务定义中。

  • 要更改与服务负载均衡器配置关联的负载均衡器名称、容器名称或容器端口,您必须创建新服务。

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

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

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

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

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

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

重要

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

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

要更改与服务负载均衡器配置关联的容器名称或容器端口,您必须创建新服务。

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

要更新服务(新的 Amazon ECS 控制台)

  1. https://console.aws.amazon.com/ecs/v2 中打开新控制台。

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

  3. Cluster overview(集群概述)页面上,选中服务旁边的框,然后选择 Edit(编辑)。

  4. 对于任务定义,选择要使用的任务定义族和修订。

    重要

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

  5. 要更改计算选项,请展开 Deployment options(部署选项)、Compute configuration(计算配置),然后执行以下操作:

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

    2. 对于使用容量提供程序策略的服务,请在 capacity provider strategy(容量提供程序策略)中选择新的容量提供程序。

      使用 Auto Scaling 组容量提供程序的服务无法更新为使用 Fargate 容量提供程序,反之亦然。

    3. 若要让您的服务启动新部署(这将停止所有当前正在运行的任务,并使用更新的配置启动新任务),请选择 Force new deployment(强制新部署)。

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

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

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

    1. 要使用部署断路器,请选择 Use the Amazon ECS deployment circuit breaker(使用 Amazon ECS 部署断路器)。

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

  7. 要配置服务自动扩缩,请展开 Service auto scaling(服务自动扩缩),然后指定以下参数。

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

    2. 对于 Minimum number of tasks(最小任务数),输入供 Service Auto Scaling 使用的任务数的下限。所需计数不会低于此计数。

    3. 对于 Maximum number of tasks(最大任务数),输入供 Service Auto Scaling 使用的任务数的上限。所需计数不会高于此计数。

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

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

    6. 对于 ECS service metric(ECS 服务指标),选择以下指标之一:

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

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

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

        指标需要一个应用程序负载均衡器以及应用程序负载均衡器的目标组。

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

    8. 对于 Scale-out cooldown period(横向扩展冷却时间),输入扩展活动结束且没有发生其他扩展的时间(以秒为单位)。

    9. 对于 Scale-in cooldown period(横向缩减冷却时间),输入缩减活动结束且没有发生其他缩减的时间(以秒为单位)。

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

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

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

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

      • 对于 Value(值),输入键值。

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

  9. 选择 Update(更新)。