Amazon EC2 Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

创建服务

在创建 Amazon ECS 服务时,您将指定基本参数,用于定义构成服务的内容以及服务的行为方式。这些参数将创建一个服务定义。

您还可以选择配置其他功能,例如 Elastic Load Balancing 负载均衡器,用于在服务中的多个容器间分配流量。有关详细信息,请参阅服务负载均衡。您必须验证容器实例是否能接收来自您的负载均衡器的流量。您可以允许流量从负载均衡器的安全组流到容器实例上的所有端口,以确保流量可到达使用动态分配的端口的任何容器。

配置基本服务参数

所有服务都需要一些基本配置参数,用于定义服务(如要使用的任务定义、应运行服务的集群、应为服务放置的任务数等);这些参数称为服务定义。有关服务定义中定义的参数的更多信息,请参阅服务定义参数

该过程介绍如何创建包含必需的基本服务定义参数的服务。在配置了这些参数后,您可以创建您的服务,或继续进行可选的服务定义配置,如配置服务以使用负载均衡器。

配置基本服务定义参数

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

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

  3. 在导航窗格中,选择 Task Definitions,然后选择用于创建服务的任务定义。

  4. Task Definition name 页面上,选择用于创建服务的任务定义的修订。

  5. 查看任务定义,然后选择 Create Service

  6. Create Service 页面上,对于 Cluster,选择用于创建服务的集群。对于 Service name,为您的服务键入唯一名称。对于 Number of tasks,键入要在您的集群中启动并保留的任务数量。如果您的任务定义在容器实例上使用静态主机端口映射,则至少需要一个具有指定端口且在集群中可用于服务中的每个任务的容器实例。如果您的任务定义使用动态主机端口映射,则此限制不适用。有关详细信息,请参阅 portMappings

  7. (可选)您可指定一些部署参数,用于控制部署期间运行的任务数以及停止和开始任务的顺序。

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

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

  8. (可选) 对于 Task Placement,您可以使用任务放置策略和约束指定如何放置任务。从以下选项中进行选择:

    • AZ Balanced Spread - 在各个可用区以及每个可用区中的各个容器实例中分配任务。

    • AZ Balanced BinPack - 在各个可用区以及具有最低可用内存的容器实例中分配任务。

    • BinPack - 根据 CPU 或内存的最低可用量来分配任务。

    • One Task Per Host - 在每个容器实例中最多可放置服务的一个任务。

    • Custom - 定义您自己的任务放置策略。有关示例,请参阅 Amazon ECS 任务放置

    有关更多信息,请参阅 Amazon ECS 任务放置

(可选)将您的服务配置为使用负载均衡器

如果您已配置可用的 Elastic Load Balancing 负载均衡器,则可通过以下过程将其附加到您的服务,您也可以配置新的负载均衡器。有关更多信息,请参阅创建负载均衡器

注意

您必须在执行这些过程之前创建 Elastic Load Balancing 负载均衡器资源。

首先,您必须选择要用于服务的负载均衡器类型。然后,您可将服务配置为使用负载均衡器。

选择负载均衡器类型

  1. 如果您尚未这样做,请按照配置基本服务参数中的基本服务创建过程操作。

  2. Create Service 页面上,选择 Configure ELB

  3. 选择要用于您的服务的负载均衡器类型:

    应用程序负载均衡器

    允许容器使用动态主机端口映射(每个容器实例允许多个任务)。在单个负载均衡器上,多个服务可以通过基于规则的路由和路径使用同一个侦听器端口。

    传统负载均衡器

    需要静态主机端口映射(每个容器实例只允许一个任务);不支持基于规则的路由和路径。

    建议您对 Amazon ECS 服务使用应用程序负载均衡器,以便利用对这些服务可用的高级功能。

  4. 对于 Select IAM role for service,选择 Create new role 以便为您的服务创建新角色,或选择对该服务使用现有 IAM 角色(默认情况下,此角色为 ecsServiceRole)。

    重要

    如果您选择使用现有 ecsServiceRole IAM 角色,则必须验证该角色是否拥有使用应用程序负载均衡器和传统负载均衡器的适当权限,如 Amazon ECS 服务计划程序 IAM 角色中所示。

  5. 对于 ELB Name,选择要用于您的服务的负载均衡器的名称。此处只有与您之前选择的负载均衡器类型对应的负载均衡器可见。

  6. 以下步骤因服务的负载均衡器类型而异。如果您选择了应用程序负载均衡器,请按照配置应用程序负载均衡器中的步骤操作。如果您选择了传统负载均衡器,请按照配置传统负载均衡器中的步骤操作。

配置应用程序负载均衡器

  1. 对于 Select a Container,从任务定义中选择负载均衡器应将流量分发到的容器和端口组合,然后选择 Add to ELB

  2. 对于 Listener port,选择您在创建 应用程序负载均衡器中创建的侦听器的侦听器端口和协议(如果适用);或者选择 create new 以创建新侦听器,然后输入端口号并在 Listener protocol 中选择端口协议。

  3. 对于 Target group name,选择您在创建 应用程序负载均衡器中创建的目标组(如果适用),或选择 create new 以创建新目标组。

  4. (可选)如果您选择创建新目标组,请按照下面所示填写以下字段:

    • 对于 Target group name,输入您的目标组的名称。

    • 对于 Target group protocol,输入用于将流量路由至您的任务的协议。

    • 对于 Path pattern,如果您的侦听器没有任何现有规则,则将使用默认路径模式 (/)。如果您的侦听器已经有默认规则,您必须输入与要发送到您的服务目标组的流量匹配的路径模式。例如,如果您的服务是名为 web-app 的 Web 应用程序,并且您希望与 http://my-elb-url/web-app 匹配的流量路由到您的服务,您应输入 /web-app* 作为您的路径模式。有关更多信息,请参阅 应用程序负载均衡器 用户指南 中的 ListenerRules

    • 对于 Health check path,输入负载均衡器应将运行状况检查 ping 发送到的路径。

  5. 当您配置完应用程序负载均衡器后,选择 Save 以保存您的配置,然后前进到查看并创建您的服务

配置传统负载均衡器

  1. Health check portHealth check protocolHealth check path 字段是使用您在创建传统负载均衡器中配置的值(如果适用)预先填充的。您可在 Amazon EC2 控制台中更新这些设置。

  2. 对于 Container for ELB health check,选择用于发送运行状况检查的容器。

  3. 当您配置完传统负载均衡器后,选择 Save 以保存您的配置,然后前进到查看并创建您的服务

(可选)将您的服务配置为使用 服务 Auto Scaling

您可以选择将 Amazon ECS 服务配置为使用 Auto Scaling 根据 CloudWatch 警报上调或下调其预期数量。有关更多信息,请参阅 服务 Auto Scaling

配置基本 服务 Auto Scaling 参数

  1. 如果您尚未这样做,请按照配置基本服务参数中的基本服务创建过程操作。

  2. Create Service 页面上,选择 Configure Service Auto Scaling

  3. Service Auto Scaling 页面上,选择 Configure Service Auto Scaling to adjust your service’s desired count

  4. 对于 Minimum number of tasks,输入 服务 Auto Scaling 要使用的任务数的下限。您的服务的预期数量将不会自动调整到低于此数量。

  5. 对于 Desired number of tasks,此字段是使用您之前输入的值预先填充的。此时您可更改服务的预期数量,但此值必须介于此页面上指定的最小任务数和最大任务数之间。

  6. 对于 Maximum number of tasks,输入 服务 Auto Scaling 要使用的任务数的上限。您的服务的预期数量将不会自动调整到高于此数量。

  7. 对于 IAM role for Service Auto Scaling,选择一个 IAM 角色来授权 Application Auto Scaling 服务代表您调整您的服务的预期数量。如果您之前未创建此类角色,请选择 Create new role,系统将为您创建此角色。为了方便将来参考,为您创建的角色名为 ecsAutoscaleRole。有关更多信息,请参阅 Amazon ECS 服务 Auto Scaling IAM 角色

为您的服务配置扩展策略

以下步骤将帮助您创建扩展策略和可用于为您的服务触发扩展活动的 CloudWatch 警报。您可以创建 Scale out 警报来增加服务的预期数量,并创建 Scale in 警报来减少服务的预期数量。

  1. 对于 Policy name,为您的策略输入一个描述性名称,或使用已输入的默认策略名称。

  2. 对于 Execute policy when,选择要用于向上或向下扩展您的服务的 CloudWatch 警报。

    您可使用之前创建的现有 CloudWatch 警报,也可选择创建新警报。Create new alarm 工作流程可让您创建基于要创建的服务的 CPUUtilizationMemoryUtilization 的 CloudWatch 警报。要使用其他指标,您可在 CloudWatch 控制台中创建一个警报,然后返回本向导以选择该警报。

  3. (可选)如果您选择创建新警报,请完成以下步骤。

    1. 对于 Alarm name,为您的警报输入一个描述性名称。例如,如果您的警报应在服务 CPU 使用率超过 75% 时触发,则可调用警报 service_name-cpu-gt-75

    2. 对于 ECS service metric,选择要用于警报的服务指标。有关这些服务利用率指标的更多信息,请参阅服务利用率

    3. 对于 Alarm threshold,输入以下信息以配置您的警报:

      • 为警报选择 CloudWatch 统计数据(默认值 Average 适用于很多情况)。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的 统计数据

      • 为您的警报选择比较运算符并输入比较运算符检查所针对的值(例如,>75)。

      • 输入触发警报前的连续时间段的数量和总长度。例如,2 个连续的 5 分钟时间段需要 10 分钟才会触发警报。由于您的 Amazon ECS 任务可快速向上和向下扩展,您应考虑使用少量的连续时间段和较短的时间段长度以尽快响应警报。

    4. 选择 Save 以保存您的警报。

  4. 对于 Scaling action,输入以下信息以配置您的服务对警报的响应方式:

    • 选择为您的服务增加预期数量、减少预期数量还是设置具体预期数量。

    • 如果您选择增加或减少任务,请输入触发扩展操作后要增加或减少的任务数(或现有任务的百分比)。如果您选择设置预期数量,请输入在触发扩展操作时应为您的服务设置的预期数量。

    • (可选)如果您选择增加或减少任务,请选择将之前的值用作整数还是现有预期数量的百分比值。

    • 输入您的步进扩展调整的下限。默认情况下,对于您的第一次扩展操作,此值是触发您的警报的指标数量。例如,以下扩展操作将在 CPU 使用率高于 75% 时增加 100% 的现有预期数量。

       扩展活动示例
  5. (可选)您可重复步骤 4 以便为单个警报配置多个扩展操作(例如,在 CPU 使用率介于 75 和 85% 之间时增加 1 个任务,在 CPU 使用率超过 85% 时增加 2 个任务)。

  6. (可选)如果您选择增大或减小现有预期数量的百分比,请在 Add tasks in increments of N task(s) 中输入最小增量值。

  7. 对于 Cooldown period,输入两次扩展操作之间的秒数。

  8. Scale in 策略重复 步骤 1步骤 7,然后选择 Save 以保存您的 服务 Auto Scaling 配置。

查看并创建您的服务

在配置基本服务定义参数和将您的服务配置为使用负载均衡器(可选)后,您可查看您的配置,然后选择 Create Service 以完成服务创建。

注意

在创建服务后,在服务定义中指定的目标组 ARN 或负载均衡器名称、容器名称和容器端口是不可变的。您无法添加、删除或更改现有服务的负载均衡器配置。如果您更新服务的任务定义,则创建服务时指定的容器名称和容器端口必须保留在任务定义中。