针对 Redis ElastiCache 进行扩展 - ElastiCache 适用于 Redis 的 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

针对 Redis ElastiCache 进行扩展

扩展 ElastiCache 无服务器

ElastiCache 当您的工作负载流量上升或下降时,Serverless 会自动适应您的工作负载流量。对于每个 ElastiCache 无服务器缓存, ElastiCache 持续跟踪 CPU、内存和网络等资源的利用率。当这些资源中的任何一个受到限制时, ElastiCache Serverless 会通过添加新分片并将数据重新分配到新分片来进行扩展,而不会使您的应用程序停机。您可以通过监控缓存数据存储和计算使用率 ElastiCacheProcessingUnits (ECPU) BytesUsedForCache 指标 CloudWatch 来监控缓存消耗的资源。

设置扩展限制以管理成本

您可以选择为缓存数据存储和缓存的每秒 ECPU 数配置最大使用量,以控制缓存成本。这样做可以确保缓存使用量永远不会超过配置的最大值。

如果您设置了扩展最大值,则当缓存达到最大值时,应用程序的缓存性能可能会降低。当您设置了最大缓存数据存储空间且缓存数据存储空间达到最大值时, ElastiCache 将开始使用 LRU 逻辑逐出缓存中设置了存活时间 (TTL) 的数据。如果没有可以驱逐的数据,则写入更多数据的请求将收到内存不足(OOM)错误消息。当您设置了 ecpu/秒的最大值,并且工作负载的计算利用率超过此值时, ElastiCache 将开始限制 Redis 请求。

如果您将最大限制设置为BytesUsedForCacheElastiCacheProcessingUnits,我们强烈建议将CloudWatch 警报设置为低于最大限制的值,以便在缓存接近这些限制时收到通知。我们建议将警报设置为所设最大值限制的 75%。请参阅有关如何设置 CloudWatch 闹钟的文档。

使用 ElastiCache 无服务器进行预扩展

ElastiCache 无服务器预扩展

使用预缩放(也称为预热),您可以为缓存设置支持的最低限制。 ElastiCache 您可以为每秒 ElastiCache 处理单元 (ECPU) 或数据存储设置这些最小值。这在为预期的扩展事件做准备时非常有用。例如,如果一家游戏公司预计在其新游戏发布的第一分钟内登录量将增加5倍,那么他们就可以为使用量的大幅激增做好缓存准备。

您可以使用 ElastiCache 控制台、CLI 或 API 进行预扩展。 ElastiCache Serverless 会在 60 分钟内更新缓存中可用的 ECPU /秒,并在最低限制更新完成后发送事件通知。

预缩放的工作原理

通过控制台、CLI 或 API 更新 ECPU /秒或数据存储的最低限制后,新的限制将在 1 小时内生效。 ElastiCache Serverless 在空缓存上支持 30K ecpus/秒,使用从副本读取功能时支持高达 90K ecpus/秒。 ElastiCache 每 10-12 分钟可以使每秒 ecpu 翻一番。这种扩展速度足以满足大多数工作负载的需求。如果您预计即将到来的扩展事件可能会超过此速率,那么我们建议将最低 ECPU /秒设置为峰值事件发生前至少 60 分钟您预计的峰值 ECPU/秒。否则,应用程序可能会遇到延迟增加和请求受限的情况。

最低限制更新完成后, ElastiCache Serverless 将开始计量新的每秒 ECPU 最小值或新的最低存储空间。即使您的应用程序没有在缓存上执行请求,或者您的数据存储使用量低于最低限度,也会发生这种情况。当您从当前设置中降低最低限制时,更新会立即生效,因此 ElastiCache Serverless 将立即以新的最低限制开始计量。

注意
  • 当您设置最低使用限制时,即使您的实际使用量低于最低使用限制,也会按该限制收费。超出最低使用限制的 ECPU 或数据存储使用量按常规费率收费。例如,如果您将最低使用限制设置为 100,000 ecpu/秒,那么即使您的使用量低于设定的最低限额,也将按每小时至少 1.224 美元的费用(使用 us-east-1 中的 ECPU 价格)。

  • ElastiCache Serverless 在缓存的聚合级别上支持请求的最小缩放比例。 ElastiCache Serverless 还支持每个插槽最多 30K ECPU /秒(使用只读连接使用从副本读取时,每秒支持 90K ECPU)。作为最佳实践,您的应用程序应确保跨Redis插槽的密钥分布和密钥之间的流量尽可能均匀。

使用控制台设置缩放限制 Amazon CLI

使用 Amazon 控制台设置缩放限制

  1. 登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/

  2. 在导航窗格中,选择在要修改的缓存上运行的引擎。

  3. 此时会显示运行所选引擎的缓存的列表。

  4. 选择缓存名称左侧的单选按钮来选择要修改的缓存。

  5. 选择 Actions(操作),然后选择 Modify(修改)。

  6. 在 “使用限制” 下,设置相应的内存计算限制。

  7. 单击预览更改,然后保存更改。

使用设置缩放限制 Amazon CLI

要使用 CLI 更改扩展限制,请使用 modify-serverless-cache API。

Linux:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \ --cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'

Windows:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^ --cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'

使用 CLI 取消扩展限制

要使用 CLI 删除扩展限制,请将最小和最大限制参数设置为 0。

Linux:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \ --cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'

Windows:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^ --cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'