

# 使用目标指标来扩展 Amazon ECS 服务
<a name="service-autoscaling-targettracking"></a>

在使用目标跟踪扩展策略时，您可以选择一个指标并设置一个目标值。Amazon ECS服务自动扩缩创建和管理控扩缩策略的 CloudWatch 警报，并根据指标和目标值计算扩缩调整。扩展策略根据需要增加或删除服务任务，将指标保持在指定的目标值或接近指定的目标值。除了将指标保持在目标值附近以外，目标跟踪扩展策略还会根据由于负载模式波动而造成的指标波动进行调节，并最大限度减少服务中运行的任务数发生快速波动的情况。

目标跟踪策略让您无需手动定义 CloudWatch 警报和扩缩调整。Amazon ECS 会根据您设置的目标自动处理此问题。

使用目标跟踪策略时，请注意以下事项：
+ 目标跟踪扩展策略假设它应该在指定指标高于目标值时执行横向扩展。因此，不能使用目标跟踪扩展策略在指定指标低于目标值时横向扩展。
+ 当指定指标数据不足时，目标跟踪扩展策略不会执行扩展。它不会执行横向缩减，因为它不会将数据不足解读为使用率低。
+ 您可能会看到目标值与实际指标数据点之间存在差距。这是因为服务自动扩缩在确定要添加或删除多少容量时将始终通过向上或向下舍入保守地进行操作，以免添加的容量不足或删除的容量过多。
+ 为了确保应用程序可用性，服务会针对指标尽快按比例扩展，但缩减过程相对缓慢。
+ Application Auto Scaling 可在 Amazon ECS 部署正在进行时关闭横向缩减流程。但是，在部署过程中，除非暂停，否则将继续发生横向扩展进程。此行为不适用于使用外部部署控制器的 Amazon ECS 服务。有关更多信息，请参阅 [服务自动扩缩和部署](service-auto-scaling.md#service-auto-scaling-deployments)。
+ 您可以为 Amazon ECS 服务创建多个目标跟踪扩展策略，但前提是它们分别使用不同的指标。服务自动扩缩的目的是始终优先考虑可用性，因此其行为会有所不同，具体取决于目标跟踪策略是否已准备好横向扩展或横向缩减。如果任何目标跟踪策略已准备好进行横向扩展，它将横向扩展服务；但仅在所有目标跟踪策略（启用了横向缩减部分）准备好横向缩减时才执行横向缩减。
+ 请勿编辑或删除服务自动扩缩 为目标跟踪缩放策略管理的 CloudWatch 报警。当您删除扩展策略时，服务自动扩缩将自动删除相应的警报。
+ 蓝绿部署类型不支持目标跟踪扩展策略的 `ALBRequestCountPerTarget` 指标。

有关目标跟踪扩展策略的更多信息，请参阅《Application Auto Scaling 用户指南》**中的[目标跟踪扩展策略](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。

# 为 Amazon ECS 服务自动扩缩创建目标跟踪扩缩策略
<a name="target-tracking-create-policy"></a>

创建目标跟踪扩缩策略，让 Amazon ECS 自动增加或减少服务中的所需任务数。目标跟踪是根据目标指标值进行的。

## 控制台
<a name="target-tracking-create-policy-aws-console"></a>

1. 除了用于创建和更新服务的标准 IAM 权限之外，您还需要额外权限。有关更多信息，请参阅 [Amazon ECS 服务自动扩缩所需的 IAM 权限](auto-scaling-IAM.md)。

1. 请确定要用于策略的指标。可供使用的指标如下：
   +  **ECSServiceAverageCPUUtilization**：服务应使用的平均 CPU 使用率。
   + **ECSServiceAverageMemoryUtilization**：服务应使用的平均内存使用率。
   + **ALBRequestCountPerTarget**：任务理想情况下应接收的平均每分钟请求数。

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 在 **Clusters**（集群）页面上，选择集群。

1. 在“集群详细信息”页面，找到**服务**部分，然后选择服务。

   此时系统会显示服务详细信息页面。

1. 选择**设置任务数**。

1. 在 **Amazon ECS 服务任务计数**下，选择**使用自动扩缩**。

   此时将显示**任务计数部分**。

   1. 对于**最小任务数**，输入供服务自动扩缩使用的任务数的下限。所需计数不会低于此计数。

   1. 对于**最大值**，输入供服务自动扩缩使用的任务数的上限。所需计数不会高于此计数。

   1. 选择**保存**。

      此时将显示策略页面。

1. 选择**创建扩缩策略**。

   此时将显示**创建策略**页面。

1. 对于**扩展策略类型**，选择**目标跟踪**。

1. 对于 **Policy name**（策略名称），请输入策略的名称。

1. 对于**指标类型**，从选项列表中选择指标。

1. 在**目标利用率**中，输入 Amazon ECS 应保留的任务百分比的目标值。服务自动扩缩可横向扩展您的容量直到平均利用率达到目标利用率，或直到达到您指定的最大任务数。

1. 在**其他设置**下，执行以下操作

   1. 对于**横向缩减冷却时间**，请输入在一个横向缩减活动完成之后、另一个横向缩减活动开始之前的时长（以秒为单位）。

   1. 对于**横向扩展冷却时间**，请输入等待先前的横向扩展活动生效的时长（以秒为单位）。

   1. 要仅创建横向扩展策略，请选择**禁用横向缩减**。

1. 选择**创建扩缩策略**。

## AWS CLI
<a name="target-tracking-create-policy-aws-cli"></a>

1. 使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令将 Amazon ECS 服务注册为可扩展目标。

1. 使用 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令创建扩展策略。