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

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

目标跟踪扩缩策略

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

副本的弹性伸缩条件

弹性伸缩策略为您的集群定义以下预定义指标:

ElastiCacheReplicaEngineCPUUtilization:跨所有副本聚合的 AVG 引擎 CPU 使用率阈值,ElastiCache for Redis 使用此阈值触发弹性伸缩操作。您可以将此使用率目标设置为 35% 到 70% 之间。

当服务检测到 ElastiCacheReplicaEngineCPUUtilization 指标等于或大于“目标”设置时,其会自动提高所有分区的副本。ElastiCache for Redis 按等于以下两个数字之间较大者的计数来横向扩展集群副本:与目标之间差异的百分比和 1 个副本。对于横向缩减,ElastiCache for Redis 不会弹性横向缩减,除非整体指标值低于所定义的目标的 75%。

关于横向扩展示例,如果您有 5 个分区,每个分区中有 1 个副本:

如果目标违例了 30%,则 ElastiCache for Redis 在所有分区上横向扩展 1 个副本(最大 0.3,默认为 1),最后的结果是有 5 个分区,每个分区包含 2 个副本,

对横向缩减示例,如果您选择的目标值是 60%,则 ElastiCache for Redis 会直到该指标小于或等于 45%(25% 低于目标 60%)时才会弹性横向缩减。

Auto Scaling 注意事项

请注意以下事项:

  • 目标跟踪扩展策略假设它应该在指定指标高于目标值时执行向外扩展。因此,不能使用目标跟踪扩展策略在指定指标低于目标值时向外扩展。ElastiCache for Redis 按集群中所有分区的现有副本的最大数量(偏离目标的偏差经四舍五入的百分比,默认为 1)横向扩展副本。

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

  • 您可能会看到目标值与实际指标数据点之间存在差距。这是因为 ElastiCache for Redis 弹性伸缩在确定要添加或删除多少容量时将始终通过向上或向下舍入保守地进行操作。以免添加的容量不足或删除的容量过多。

  • 为了确保应用程序可用性,服务会针对指标尽快按比例横向扩展,但渐进式横向缩减,集群中所有分区的最大横向缩减副本数为 1。

  • 您可以为 ElastiCache for Redis 集群提供多个目标跟踪扩缩策略,前提是它们各自使用不同的指标。ElastiCache for Redis 弹性伸缩的目的是始终优先考虑可用性,因此其行为会有所不同,具体取决于目标跟踪策略是否已准备好横向扩展或横向缩减。如果任何目标跟踪策略已准备好进行扩展,它将扩展服务,但仅在所有目标跟踪策略(启用了缩减部分)准备好缩减时才执行缩减。

  • 请勿编辑或删除 ElastiCache for Redis 弹性伸缩为目标跟踪扩缩策略管理的 CloudWatch 告警。在您删除扩缩策略或删除集群时,ElastiCache for Redis 弹性伸缩会自动删除相应的告警。

  • ElastiCache for Redis 弹性伸缩不会阻止您手动修改分区中的副本。这些手动调整不会影响附加到扩展策略的任何现有 CloudWatch 告警,但可能会影响可触发这些 CloudWatch 告警的指标。

  • 这些由弹性伸缩管理的 CloudWatch 告警是通过集群中所有分区的 AVG 指标来定义的。因此,拥有热分区可能会导致以下任一情况:

    • 因若干热分区上负载触发 CloudWatch 告警而导致在不需要扩展时执行扩展

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

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

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

  • 如果 EC2 没有足够的可用容量,则 ElastiCache for Redis 弹性伸缩会直到容量可用或您手动将集群修改为具有足够容量的实例类型才会横向扩展。

  • ElastiCache for Redis 弹性伸缩不支持扩展其集群 ReservedMemoryPercent 低于 25% 的副本。有关更多信息,请参阅管理预留内存