本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自动扩缩 Valkey 和 Redis OSS 集群
先决条件
ElastiCache Auto Scaling 仅限于以下方面:
-
运行 Valkey 7.2 和更高版本或运行 Redis OSS 6.0 和更高版本的 Valkey 或 Redis OSS(已启用集群模式)集群
-
运行 Valkey 7.2 和更高版本或运行 Redis OSS 7.0.7 和更高版本的数据分层(已启用集群模式)集群
-
实例大小 – 大型、XLarge、2XLarge
-
实例类型系列-R8g、R7g、R6g、R6gD、R5、m8g、m7g、m6g、m6g、M5、c8gn、c7gn、C7GN
-
在 ElastiCache 全球数据存储、前哨或本地区域中运行的集群不支持自动缩放。
通过 Valkey 或 Redis OSS 的 ElastiCache Auto Scaling 自动管理容量
ElastiCache 使用 Valkey 或 Redis OSS 进行自动扩展可以自动增加或减少服务中所需的分片或副本。 ElastiCache ElastiCache 利用应用程序自动扩展服务来提供此功能。有关更多信息,请参阅 Application Auto Scaling。要使用自动扩展,您需要定义和应用使用您分配的 CloudWatch 指标和目标值的扩展策略。 ElastiCache auto scaling 使用该策略来增加或减少实例数量以响应实际工作负载。
您可以使用 Amazon Web Services 管理控制台 根据预定义的指标应用扩展策略。枚举中对 predefined metric 进行了定义,因此您可在代码中按名称指定或在 Amazon Web Services 管理控制台中使用它。自定义指标不可用于使用 Amazon Web Services 管理控制台的选择。或者,您可以使用 Amazon CLI 或应用程序 Auto Scaling API 根据预定义或自定义指标应用扩展策略。
ElastiCache 适用于 Valkey 和 Redis OSS 支持在以下维度上进行扩展:
-
分片 -自动在集群中进行 add/remove分片,类似于手动在线重新分片。在这种情况下, ElastiCache自动缩放会代表您触发扩展。
-
副本 -在集群中自动 add/remove复制副本,类似于手动 Increase/Decrease 副本操作。 ElastiCache 在集群中的所有分片上均匀地自动扩展 Valkey 和 Redis OS adds/removes S 副本。
ElastiCache 对于 Valkey 和 Redis OSS 支持以下类型的自动扩展策略:
-
目标跟踪扩缩策略— 根据特定指标 shards/replicas 的目标值增加或减少服务运行的次数。这与恒温器保持家里温度的方式类似。您选择一个温度,恒温器将完成所有其他工作。
-
对您的应用程序进行计划扩展。— ElastiCache 对于 Valkey 和 Redis OSS 来说,自动扩展可以根据日期和时间增加或减少您的服务运行次数。 shards/replicas
以下步骤总结了 ElastiCache for Valkey 和 Redis OSS 自动扩展过程,如上图所示:
-
您可以为复制组创建 ElastiCache 自动扩展策略。
-
ElastiCache 自动缩放会代表你创建一对 CloudWatch 警报。每对告警代表指标的上限和下限。当集群的实际利用率持续偏离目标利用率时,就会触发这些 CloudWatch 警报。您现在可以在控制台中查看告警。
-
如果配置的指标值在特定时间内超过目标利用率(或低于目标),则 CloudWatch 会触发警报,调用 auto Scaling 来评估您的扩展策略。
-
ElastiCache auto scaling 发出修改请求以调整您的集群容量。
-
ElastiCache 处理修改请求,动态增加(或减少)群集 Shards/Replicas 容量,使其接近目标利用率。
要了解 ElastiCache Auto Scaling 的工作原理,假设你有一个名为的集群UsersCluster。通过监控的 CloudWatch 指标UsersCluster,您可以确定流量达到峰值时集群所需的最大分片数和流量处于最低点时的最小分片数。您还可以决定集UsersCluster群的 CPU 利用率的目标值。 ElastiCache auto scaling 使用其目标跟踪算法来确保根据需要调整预置的UsersCluster分片,以使利用率保持在或接近目标值。
注意
扩展可能需要很长时间,并且需要额外的集群资源才能重新平衡分片。 ElastiCache 只有当实际工作负载持续几分钟保持升高(或降低)状态时,Auto Scaling 才会修改资源设置。自动扩缩目标跟踪算法旨在使目标使用率长期达到或接近选定值。
自动扩缩需要的 IAM 权限
ElastiCache 对于 Valkey 和 Redis OSS,Auto Scaling 是通过 ElastiCache CloudWatch、和应用程序 Auto Scaling API 的组合实现的。使用 ElastiCache应用程序 Auto Scaling 创建和更新集群 CloudWatch,使用创建警报,使用应用程序 Auto Scaling 创建扩展策略。除了创建和更新集群的标准 IAM 权限外,访问 A ElastiCache uto Scaling 设置的 IAM 用户还必须拥有支持动态扩展的服务的相应权限。在这个最新的策略中,我们通过 elasticache:ModifyCacheCluster 操作增加了对 Memcached 垂直扩缩的支持。IAM 用户必须具有使用以下示例策略中的操作的权限。
Service-linked 角色
ElastiCache for Valkey 和 Redis OSS 自动扩展服务还需要权限来描述您的集群和 CloudWatch 警报,以及代表您修改 ElastiCache 目标容量的权限。如果您为集群启用自动扩缩服务,系统就会创建一个名为 AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG 的服务相关角色。此服务相关角色授予 ElastiCache Auto Scaling 权限以描述您的策略警报、监控队列的当前容量以及修改队列的容量。服务相关角色是 ElastiCache 自动扩展的默认角色。有关更多信息,请参阅Service-linked 《应用程序自动扩展用户指南》中的 Redis OSS 自动伸缩的角色。 ElastiCache
Auto Scaling 最佳实践
在注册 Auto Scaling 功能之前,我们建议执行以下操作:
-
仅使用一个跟踪指标 – 确定您的集群是具有 CPU 密集型工作负载还是数据密集型工作负载,并使用相应的预定义指标来定义扩展策略。
-
引擎 CPU:
ElastiCachePrimaryEngineCPUUtilization(分片维度)或ElastiCacheReplicaEngineCPUUtilization(副本维度) -
数据库使用情况:
ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage此扩展策略在集群上将 maxmemory-policy 设置为 noeviction 时效果最佳。
我们建议您避免在集群上为每个维度设置多个策略。 ElastiCache 对于 Valkey 和 Redis OSS 来说,如果有任何目标跟踪策略准备向外扩展,Auto Scaling 将扩展可扩展目标,但只有在所有目标跟踪策略(启用缩小部分)都准备好扩展时,才会向内扩展。如果多个策略指示可扩展目标同时横向扩展或缩减,ElastiCache for Redis 会根据为横向缩减和横向扩展提供最大容量的策略进行扩展。
-
-
目标跟踪的自定义指标 -在为目标跟踪使用自定义指标时要谨慎行事,因为自动缩放最适合扩展—— out/in 与为策略选择的指标的变化成正比。如果这些指标未随用于策略创建的扩缩操作成比例变化,则可能会导致持续的横向扩展或横向缩减操作,从而可能会影响可用性或成本。
对于数据分层集群(r6gd 系列实例类型),请避免使用基于内存的指标进行扩缩。
-
计划扩展 — 如果您确定工作负载是确定性的( high/low 在特定时间到达),我们建议使用计划扩展并根据需要配置目标容量。目标跟踪最适合以通过在您需要更多资源时横向扩展,并在需要较少资源时横向缩减的方式按所需目标指标运行的非确定性工作负载和集群。
-
禁用 Scale-In — Target Tracking 上的自动扩展最适合工作负载渐进 increase/decrease 的集群,因为 spikes/dip 指标可以触发连续的规模out/in波动。为了避免这种振荡,您可以先禁用横向缩减,之后可以随时根据需要手动横向缩减。
-
测试您的应用程序 -我们建议您在创建扩展策略时使用估计 Min/Max 的工作负载测试应用程序,以确定集群 shards/replicas 所需的绝对最小值和最大值,以避免可用性问题。Auto Scaling 可以横向扩展至为目标配置的最大阈值,也可以横向缩减至配置的最小阈值。
-
定义目标值 -您可以分析四周内群集利用率的相应 CloudWatch 指标,以确定目标值阈值。如果您仍然不确定要选择哪个值,我们建议您从支持的最小预定义指标值开始。
-
AutoScaling on Target Tracking 最适合工作负载在各个 shards/replicas 维度上均匀分布的集群。分布不均可能导致:
-
由于几个主机 spike/dip 上的工作负载而不需要时进行扩展 shards/replicas。
-
由于尽管天气很热 shards/replicas,但总体平均值仍接近目标,因此在需要时无法缩放。
-
注意
扩展集群时, ElastiCache 会自动将加载到一个现有节点(随机选择)中的函数复制到新节点。如果您的集群有 Valkey 或 Redis OSS 7.0 或更高版本,并且您的应用程序使用 Functions
注册到后 AutoScaling,请注意以下几点:
-
Auto Scaling 支持的配置存在限制,因此我们建议不要更改已注册 Auto Scaling 的复制组的配置。示例如下:
-
手动将实例类型修改为不支持的类型。
-
将复制组与全局数据存储关联。
-
更改
ReservedMemoryPercent参数。 -
手动 increasing/decreasing shards/replicas 超出策略创建期间配置的 Min/Max容量。
-