亚马逊AWS官方博客

Amazon ElastiCache 更新 – 在线调整 Redis 集群大小

使用 Amazon ElastiCache,您可以轻松设置快速的内存数据存储和缓存。由于支持两款最流行的开源产品 (Redis 和 Memcached),ElastiCache 能够满足游戏排行榜、内存分析和大规模消息收发的严格要求。

今天,我准备为大家介绍 Amazon ElastiCache for Redis 的一项重要补充。您已经可以创建拥有多达 15 个分片的集群,每个分片负责为一组特定的槽存储键和值 (每个集群拥有整整 16,384 个槽)。一个集群可扩展至存储 3.55 TB 的内存数据,同时每秒支持多达 2,000 万次读取和 450 万次写入。

现在可以在线调整大小
您现在可以调整正在运行的 ElastiCache for Redis 集群中的分片数量,而该集群仍可保持在线状态并响应请求。这样一来,您便可对流量和数据量的变更作出反应,而无需使集群脱机或从空缓存开始。您也可以重新平衡正在运行的集群,以便均匀地重新分配槽空间,而不更改分片数量。

启动重新分片或重新平衡操作时,ElastiCache for Redis 首先会准备一个计划,确保槽在集群的分片中均匀分配。然后,它在分片之间转移槽,并行移动许多槽以提高效率。这都是在集群继续响应请求期间发生,对写入移动中的槽时的写入吞吐量的影响较小。迁移率取决于实例类型、网络速度、槽的读/写流量,通常约为 1 GB/分钟。

重新分片和重新平衡操作适用于在启用集群模式的情况下创建的 Redis 集群:

对集群重新分片
通常,当开始面临巨大的内存压力或各个节点日益成为瓶颈时,您就知道是时候通过重新分片来扩展集群了。您可以观察集群的 CloudWatch 指标以识别每种情况:

Memory Pressure – 可用内存、交换分区使用情况、用于缓存项目的字节数。

CPU Bottleneck – CPU 利用率、当前连接、新连接。

Network Bottleneck – 网络输入字节数、网络输出字节数。

您可以使用 CloudWatch 控制面板来监控这些指标,并使用 CloudWatch 警报来自动执行重新分片流程。

要从 ElastiCache 控制面板对 Redis 集群执行重新分片,请单击该集群以访问详细信息页面,然后单击 Add shards 按钮:

输入要添加的分片数量和 (可选) 所需的可用区数量,然后单击 Add

集群的状态将变为正在修改,且重新分片流程将启动。时间从几分钟到几小时不等,如上文所述。您可以在详细信息页面上跟踪该集群的进度:

您可以看到槽在分片之间移动:

您还可以观察该集群的事件:

重新分片期间,您应避免使用 KEYSSMEMBERS 命令,以及计算密集型 Lua 脚本,以便减轻集群分片上的负载。您应完全避免 FLUSHDBFLUSHALL 命令;使用这些命令会中断然后中止重新分片流程。

当该流程完成时,每个分片的状态都将返回至 available

删除分片时会发生同样的流程。

槽重新平衡
您可以通过转至集群的详细信息页面并单击 Rebalance Slot Distribution 来执行此操作:

需知信息
下面是需要牢记的关于此新功能的一些事项:

Engine Version – 您的集群必须运行 3.2.10 版 Redis 引擎。

Migration Size – 不会迁移序列化后包含大于 256 MB 的项目的槽。

Cluster Endpoint – 集群终端节点不会因为重新分片或重新平衡而更改。

现已推出
此功能现已推出,您可以立即开始使用。

Jeff