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

使用经典控制台更新服务

重要

Amazon ECS 为更新服务提供了新的控制台体验。有关更多信息,请参阅使用控制台更新服务

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

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

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

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

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

如果服务使用蓝色/绿色 (CODE_DEPLOY) 部署类型,而任务使用EC2启动类型,则最小运行状况百分比最大百分比 值将原定设置为值。它们只用于定义在容器实例处于 DRAINING 状态时保持在 RUNNING 状态的服务中的任务数的下限和上限。如果服务中的任务使用 Fargate 启动类型,则不使用最小正常百分比和最大百分比值。目前,它们在描述您的服务时可见。

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

重要

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

您可以使用 Amazon CLI 或开发工具包来修改负载均衡器配置。有关如何修改配置的信息,请参阅 Amazon Elastic Container Service API 参考中的 UpdateService

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

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

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

更新运行服务
  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

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

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

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

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

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

  7. 配置服务页面上,您的服务信息已预先填充。更改任务定义、容量提供程序策略、平台版本、部署配置或所需任务的数量(或这些设置的任意组合)。要让您的服务启动新部署(这将停止并使用新配置重新启动所有任务),请选择 Force new deployment (强制新部署)。完成更改服务配置后,选择 Next step (下一步)

    注意

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

    使用 Linux 平台版本的服务无法更新为使用 Windows 平台版本,反之亦然。

  8. Configure deployments (配置部署) 页面上,如果您的服务使用蓝/绿部署类型,则会预先填充您的服务部署的组件。确认以下设置。

    1. 对于 Application name (应用程序名称),选择您的服务属于的 CodeDeploy 应用程序。

    2. 对于 Deployment group name (部署组名称),选择您的服务属于的 CodeDeploy 部署组。

    3. 选择要作为服务部署的新修订的一部分执行的部署生命周期事件挂钩及关联的 Lambda 函数。可用的生命周期挂钩有:

      • BeforeInstall - 在创建替换任务集之前,使用此部署生命周期事件挂钩来调用 Lambda 函数。在发生此生命周期事件时运行的 Lambda 函数结果不会触发回滚。

      • AfterInstall –在创建替换任务集之后,使用此部署生命周期事件挂钩来调用 Lambda 函数。在发生此生命周期事件时运行的 Lambda 函数结果可能触发回滚。

      • BeforeAllowTraffic – 在生产流量重新路由到替换任务集之前,使用此部署生命周期事件挂钩来调用 Lambda 函数。在发生此生命周期事件时运行的 Lambda 函数结果可能触发回滚。

      • AfterAllowTraffic – 在生产流量重新路由到替换任务集之后,使用此部署生命周期事件挂钩来调用 Lambda 函数。在发生此生命周期事件时运行的 Lambda 函数结果可能触发回滚。

      有关生命周期的更多信息,请参阅 Amazon CodeDeploy 用户指南中的 AppSpec 'hooks'部分

  9. 选择 Next step(下一步)

  10. 配置网络页面上,您的网络信息已预先填充。在 Load balancing (负载均衡) 部分中,如果您的服务使用的是蓝/绿部署类型,请选择要与目标组关联的侦听器。更改运行状况检查宽限期 (如果需要),然后选择下一步

  11. (可选)您可使用 Service Auto Scaling 来扩展和缩减服务以响应 CloudWatch 警报。

    1. 可选配置下,选择配置 Service Auto Scaling

    2. 继续执行步骤 5:配置您的服务使用服务 Auto Scaling

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

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