目标跟踪扩缩策略 - 亚马逊 ElastiCache

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

目标跟踪扩缩策略

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

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

预定义指标

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

预定义指标名称 CloudWatch 指标名称 CloudWatch 指标维度 不符合条件的实例类型
ElastiCachePrimaryEngineCPUUtilization

EngineCPUUtilization

ReplicationGroupId,角色 = 主角色

ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage

DatabaseCapacityUsageCountedForEvictPercentage

Valkey 或 Redis OSS 复制组指标

ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage

DatabaseMemoryUsageCountedForEvictPercentage

Valkey 或 Redis OSS 复制组指标

R6gd

数据分层实例类型不能使用ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage,因为这些实例类型将数据存储在内存和。SSD数据分层实例的预期用例是拥有 100% 的内存使用率并根据需要填满SSD。

分区的弹性伸缩条件

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

关于横向扩展示例,如果您的分区数为 50,以及

  • 如果你的 Target 违规率为 30%, ElastiCache 则 Valkey 或 Redis 会OSS扩展 30%,这会导致每个集群有 65 个分片。

  • 如果您的 Target 违规率为 10%, ElastiCache 则默认情况下,Valkey 或 Redis 会OSS扩展最小值为 20%,这会导致每个集群有 60 个分片。

以缩减为例,如果您选择的目标值为60%,则 ElastiCache 使用Valkey或Redis时,在指标小于或等于45%(比目标低25% 60%)之前,Valkey或Redis OSS 不会自动缩小。

弹性伸缩注意事项

请注意以下事项:

  • 目标跟踪扩展策略假设它应该在指定指标高于目标值时执行向外扩展。当指定指标低于目标值时,您不能使用目标跟踪扩展策略进行扩展。 ElastiCache 使用 Valkey 或 Redis 将分片OSS扩展到集群中现有分片的目标值至少 20%。

  • 当指定指标数据不足时,目标跟踪扩展策略不会执行扩展。它不会执行横向缩减,因为它不会将数据不足解读为使用率低。

  • 您可能会看到目标值与实际指标数据点之间存在差距。这是因为 ElastiCache 对于 Valkey 或 Redis,OSSAuto Scaling 在决定要添加或删除的容量时总是通过向上或向下舍入来采取保守的行动。以免添加的容量不足或删除的容量过多。

  • 为了确保应用程序可用性,服务会针对指标尽快按比例横向扩展,但横向缩减过程相对缓慢。

  • 您可以为 with Valkey 或 Redis OSS 集群设置多个目标跟踪扩展策略,前提是每个策略都使用不同的指标。 ElastiCache ElastiCache (RedisOSS) Auto Scaling 的目的是始终优先考虑可用性,因此其行为会根据目标跟踪策略是为横向扩展还是向内扩展做好准备而有所不同。如果任何目标跟踪策略已准备好进行扩展,它将扩展服务,但仅在所有目标跟踪策略(启用了缩减部分)准备好缩减时才执行缩减。

  • 请勿编辑或删除 ElastiCache 使用 Valkey 或 Redis OSS Auto Scaling 为目标跟踪扩展策略管理的 CloudWatch 警报。 ElastiCache 当您删除扩展策略时,Auto Scaling 会自动删除警报。

  • ElastiCache Auto Scaling 不会阻止您手动修改集群分片。这些手动调整不会影响附加到扩展策略的任何现有 CloudWatch 警报,但可能会影响可能触发这些 CloudWatch 警报的指标。

  • 这些由 Auto Scaling 管理的 CloudWatch 警报是根据集群中所有分片的AVG指标定义的。因此,拥有热分区可能会导致以下任一情况:

    • 由于几个热分片上的负载会触发警报,因此不需要时进行 CloudWatch 扩展

    • 由于AVG所有分片的聚合影响警报,因此无法在需要时进行扩展。

  • ElastiCache Valkey 或 Redis 对每个集群的节点数的OSS默认限制仍然适用。因此,当选择弹性伸缩时,如果您希望最大节点数超过默认限制,请在 AWS Service Limits 请求提高限制,并选择限制类型 Nodes per cluster per instance type(每个实例类型的集群的节点数)。

  • 确保您有足够的ENIs(弹性网络接口)VPC,这是横向扩展期间所必需的。有关更多信息,请参阅弹性网络接口

  • 如果没有足够的可用容量EC2, ElastiCache Auto Scaling 将无法扩展,并且会延迟到容量可用为止。

  • ElastiCache (RedisOSS) 缩容期间的 Auto Scaling 不会移除序列化后插槽中项目大小大于 256 MB 的分片。

  • 在横向缩减期间,如果生成的分区配置中可用的内存不足,则横向缩减不会删除分区。