

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

# 目标跟踪扩缩策略
<a name="AutoScaling-Scaling-Policies-Target"></a>

使用目标跟踪扩展策略，您可以选择一个指标并设置目标值。 ElastiCache 对于 Valkey 和 Redis，OSS Auto Scaling 会创建和管理触发扩展策略的 CloudWatch 警报，并根据指标和目标值计算缩放调整。扩展策略根据需要添加或删除分区，以便将指标保持在指定的目标值或接近该值。除了将指标保持在目标值附近以外，目标跟踪扩展策略还会根据由于负载模式波动而造成的指标波动进行调节，并最大限度减少队列容量发生快速波动的情况。

例如，考虑使用具有已配置了目标值的预定义平均 `ElastiCachePrimaryEngineCPUUtilization` 指标的扩展策略。这种策略可以将 CPU 使用率保持在指定的目标值或接近该值。

## 预定义指标
<a name="AutoScaling-Scaling-Criteria-predfined-metrics"></a>

预定义指标是指给定 CloudWatch 指标的特定名称、维度和统计数据 (`average`) 的结构。自动扩缩策略为您的集群定义下面的预定义指标之一：


****  

| 预定义指标名称 | CloudWatch 指标名称 | CloudWatch 指标维度 | 不符合条件的实例类型  | 
| --- | --- | --- | --- | 
| ElastiCachePrimaryEngineCPUUtilization | `EngineCPUUtilization` | ReplicationGroupId，角色 = 主角色 | 无 | 
| ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage | `DatabaseCapacityUsageCountedForEvictPercentage` | Valkey 或 Redis OSS 复制组指标 | 无 | 
| ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage | `DatabaseMemoryUsageCountedForEvictPercentage` | Valkey 或 Redis OSS 复制组指标 | R6gd | 

Data-tiered 实例类型不能使用`ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage`，因为这些实例类型将数据存储在内存和 SSD 中。数据分层实例的预期使用案例是 100% 的内存使用率，并根据需要填满 SSD。

## 分区的弹性伸缩条件
<a name="AutoScaling-Scaling-Criteria"></a>

当服务检测到您的预定义指标等于或大于 Target 设置时，它将自动增加您的分片容量。 ElastiCache 对于 Valkey 和 Redis，OSS 按等于两个数字中较大者的计数来扩展您的集群分片：与 Target 的百分比变化和当前分片的 20%。对于缩小规模，除非总体指标值低于定义目标的 75%，否则 ElastiCache 不会自动缩减。

关于横向扩展示例，如果您的分区数为 50，以及
+ 如果您的 Target 违规率为 30%，则向外 ElastiCache 扩展 30%，这会导致每个集群有 65 个分片。
+ 如果您的 Target 违规率为 10%，则默认 ElastiCache 扩展为最小值 20%，这会导致每个集群有 60 个分片。

以缩减为例，如果您选择的目标值为 60%，则在指标小于或等于 45%（低于目标 60% 的 25%）之前， ElastiCache 不会自动缩减。

## 弹性伸缩注意事项
<a name="AutoScaling-Scaling-Considerations"></a>

请注意以下事项：
+ 目标跟踪扩展策略假设它应该在指定指标高于目标值时执行横向扩展。当指定指标低于目标值时，您不能使用目标跟踪扩展策略进行扩展。 ElastiCache 对于 Valkey 和 Redis，OSS 将分片扩展到集群中现有分片的目标值至少 20%。
+ 当指定指标数据不足时，目标跟踪扩展策略不会执行扩展。它不会执行横向缩减，因为它不会将数据不足解读为使用率低。
+ 您可能会看到目标值与实际指标数据点之间存在差距。这是因为 ElastiCache Auto Scaling 在确定要添加或移除多少容量时，总是通过向上或向下四舍五入来行事。以免添加的容量不足或删除的容量过多。
+ 为了确保应用程序可用性，服务会针对指标尽快按比例横向扩展，但横向缩减过程相对缓慢。
+ 您可以为 Valkey 和 Redis OSS 集群设置多个目标跟踪扩展策略，前提是每个策略都使用不同的指标。 ElastiCache ElastiCache Auto Scaling 的目的是始终对可用性进行优先排序，因此其行为会根据目标跟踪策略是否准备好进行横向扩展或缩小而有所不同。如果任何目标跟踪策略已准备好进行扩展，它将扩展服务，但仅在所有目标跟踪策略（启用了缩减部分）准备好缩减时才执行缩减。
+ 请勿编辑或删除 ElastiCache Auto Scaling 为目标跟踪扩展策略管理的 CloudWatch 警报。 ElastiCache 当您删除扩展策略时，Auto Scaling 会自动删除警报。
+ ElastiCache Auto Scaling 不会阻止您手动修改集群分片。这些手动调整不会影响附加到扩展策略的任何现有 CloudWatch 警报，但可能会影响可能触发这些 CloudWatch 警报的指标。
+ 这些由 Auto Scaling 管理的 CloudWatch 警报是根据集群中所有分片的 AVG 指标定义的。因此，拥有热分区可能会导致以下任一情况：
  + 由于几个热分片上的负载会触发警报，因此不需要时进行 CloudWatch 扩展
  + 因所有分区的影响告警的聚合 AVG 指标不违例而在需要扩展时不执行扩展。
+ ElastiCache 每个集群的节点数的默认限制仍然适用。因此，当选择弹性伸缩时，如果您希望最大节点数超过默认限制，请在 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 请求提高限制，并选择限制类型 **Nodes per cluster per instance type**（每个实例类型的集群的节点数）。
+ 请确保您的 VPC 中有足够的 ENI（弹性网络接口）可用，横向扩展过程中需要弹性网络接口。有关更多信息，请参阅[弹性网络接口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)。
+ 如果 EC2 提供的容量不足，A ElastiCache uto Scaling 将无法扩展，并且会延迟到容量可用为止。
+ ElastiCache 对于 Redis OSS，缩容期间的 Auto Scaling 不会移除序列化后项目大小大于 256 MB 的分片。
+ 在横向缩减期间，如果生成的分区配置中可用的内存不足，则横向缩减不会删除分区。