使用控制台更新服务 - Amazon Elastic Container Service

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

使用控制台更新服务

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

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

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

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

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

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

    • 蓝/绿部署

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

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

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

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

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

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

  • 如果您的服务使用一个负载均衡器,则无法使用控制台更改创建该负载均衡器时为服务定义的负载均衡器配置。您可以改为使用 AWS CLI 或 SDK 修改负载均衡器配置。有关如何修改配置的信息,请参阅UpdateService亚马逊弹性容器服务 API 参考》。

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

您可以更新现有服务以更改一些服务配置参数,如该服务维护的任务数、任务使用哪个任务定义,或者,如果您的任务使用的是 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. 对于开启的服务 AWS Fargate,对于平台版本,请选择新版本。

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

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

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

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

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

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

    2. 在 “最小任务数” 中,输入要使用的 service auto Scaling 任务数的下限。所需计数不会低于此计数。

    3. 在 “最大任务数” 中,输入要使用的 service auto Scaling 的任务数上限。所需计数不会高于此计数。

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

      要使用该策略,请键入... 请执行此操作...

      目标跟踪

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

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

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

        • ECS ServiceAverage CPU利用率-服务的平均CPU利用率。

        • ECS ServiceAverageMemoryUtilization-服务的平均内存利用率。

        • ALB RequestCountPerTarget — A pplication Load Balancer 目标组中每个目标完成的请求数。

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

      5. 对于 Scale-Out 冷却时间(,),输入扩展策略在扩展活动(添加任务)之后阻止缩减活动并限制一次可以扩展的任务数量的时间长度(以秒为单位)。

      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. 如果您的任务使用的数据卷与部署时的配置兼容,则可以通过扩展 Volume 来配置该

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

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

    Amazon EBS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • 对于,输入键值。

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

  15. 选择更新