Amazon Elastic Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

更新服务

您可更新运行服务以更改服务保留的任务数或任务使用的任务定义。如果您有需要更多容量的应用程序,则可以扩展服务以使用更多容器实例(只要这些实例可用)。如果您有要缩减的未使用容量,则可以减少服务中的所需任务的数量并释放资源。

如果您已更新应用程序的 Docker 镜像,则可使用该镜像创建新的任务定义并将此定义部署到您的服务。服务计划程序将使用最小正常百分比和最大百分比参数(在服务的部署配置中)确定部署策略。

最小正常百分比以预期任务数的百分比形式表示部署期间必须保持在 RUNNING 状态的服务任务数的下限(向上取整到最近的整数)。此参数使您不必使用额外的集群容量就能部署。例如,如果您的服务的预期任务数为 4,最小正常百分比为 50%,则计划程序可能在开始两个新任务之前停止两个现有任务以释放集群容量。 使用负载均衡器的服务的任务在处于 RUNNING 状态时被视为正常,使用负载均衡器的服务的任务在处于 RUNNING 状态时被视为正常,并且承载该任务的容器实例将被负载均衡器报告为正常。最小正常百分比的默认值在控制台中为 50%,在 AWS CLI、AWS 软件开发工具包和 API 中为 100%。

最大百分比参数以预期任务数的百分比形式表示部署期间允许处于 RUNNINGPENDING 状态的服务任务数的上限(向下取整到最近的整数)。此参数使您能够定义部署批次大小。例如,如果您的服务的预期任务数为 4,最大百分比值为 200%,则计划程序将在停止 4 个旧任务之前开始 4 个新任务(前提是具有执行此操作所需的集群资源)。最大百分比的默认值为 200%。

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

重要

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

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

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

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

更新运行服务

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 在导航栏上,选择集群所在的区域。

  3. 在导航窗格中,选择 Clusters

  4. Clusters 页面上,选择您的服务驻留的集群的名称。

  5. Cluster: name 页面上,选择 Services

  6. 选中要更新的服务左侧的框并选择 Update

  7. Update Service 页面上,您的服务信息已预先填充。更改任务定义、部署配置或所需任务的数量(或这些设置的任意组合)。

  8. (可选)您可使用 服务 Auto Scaling 自动向上和向下扩展服务以响应 CloudWatch 警报。

    1. Optional configurations 下,选择 Configure 服务 Auto Scaling

    2. 前进到(可选)将您的服务配置为使用 服务 Auto Scaling步骤 3

    3. 完成该节中的步骤,然后返回此处。

  9. 选择 Update Service 以完成并更新服务。