目标跟踪扩缩策略 - 亚马逊 ElastiCache (Redis OSS)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

目标跟踪扩缩策略

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

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

预定义指标

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

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

EngineCPUUtilization

ReplicationGroupId,角色 = 主角色

ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage

DatabaseCapacityUsageCountedForEvictPercentage

Redis OSS 复制组指标

ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage

DatabaseMemoryUsageCountedForEvictPercentage

Redis OSS 复制组指标

R6gd

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

分区的弹性伸缩条件

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

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

  • 如果你的目标违规率为 30%, ElastiCache (Redis OSS) 就会扩展 30%,这会导致每个集群有 65 个分片。

  • 如果您的 Target 违规率为 10%,则 ElastiCache (Redis OSS)默认会扩展至最低 20%,这会导致每个集群有 60 个分片。

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

弹性伸缩注意事项

请注意以下事项:

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

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

  • 您可能会看到目标值与实际指标数据点之间存在差距。这是因为 ElastiCache (Redis OSS)Auto Scaling 在确定要添加或删除的容量时,总是通过向上或向下四舍五入来行事。以免添加的容量不足或删除的容量过多。

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

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

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

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

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

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

    • 因所有分区的影响告警的聚合 AVG 指标不违例而在需要扩展时不执行扩展。

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

  • 请确保您的 VPC 中有足够的 ENI(弹性网络接口)可用,横向扩展过程中需要弹性网络接口。有关更多信息,请参阅弹性网络接口

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

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

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