更改 Amazon ElastiCache for Redis 节点类型时,该选项不可用,更改未生效,或者收到错误消息。该如何对此类问题进行故障排除?
简短描述
以下是更改 Redis 节点类型时出现问题的常见原因:
- 目标节点类型的内存不足。
- 容量不足。
- 弹性网络接口不足。
- 指定的节点类型在可用区中不可用。
- Redis 引擎版本不支持目标节点类型。
- ApplyImmediately 参数设置为了 false。
- 节点利用率过高。
解决方法
**注意:**您可以使用 ElastiCache 事件和 AWS CloudTrail 获得进一步见解并查看相关错误消息。
目标节点类型的内存不足
确保新节点类型具有足够大的内存,以足以容纳所有数据和满足所需的 Redis 开销。Amazon CloudWatch 在 Amazon ElastiCache 下提供 Redis 指标。确保 BytesUsedForCache 指标中显示的当前总内存使用量低于目标节点类型的最大容量。
如果 BytesUsedForCache 指标高于目标节点类型的最大容量,则您会收到以下错误消息:
Failed to scale down to cache node type Replication Group <replication_group_name> because the node has insufficient memory. Please select a different node type or reduce current memory usage and retry.
**注意:**默认情况下,每个缓存节点都为非数据使用和后台写入预留 25% 的内存。预留内存量在 reserved-memory-percent 参数中设置。此预留内存会将用于缓存数据的最大内存减少 25%。这意味着可用于数据的内存量更少。您可以修改预留内存量以更改可用于缓存数据的最大内存。此更改需要创建自定义参数组,因为您无法修改默认参数组。但是,将预留内存百分比设置为 0 可能会导致某些集群操作(例如快照)失败。
有关缓存数据大小和内存使用情况的说明,请参阅为什么无法缩减 ElastiCache 集群?
容量不足
InsufficientCacheClusterCapacity 错误表示 Amazon ElastiCache 无法从给定的可用区中分配请求的众多实例。有关解决此错误的信息,请参阅错误消息:InsufficientCacheClusterCapacity。
弹性网络接口不足
确保您有足够的弹性网络接口容量。如需要,使用服务限额来提高限制。有关更多信息,请参阅如果已达到 AWS 区域中的弹性网络接口限制,如何获得更多弹性网络接口?
指定的节点类型在可用区中不可用
如果您使用的节点类型在指定的可用区中不受支持,则会收到以下 InvalidParameterValue 错误消息:
Specified node type <node_type> is not available in AZ <availability_zone>
有关可用节点类型的说明,请参阅为什么无法缩减 ElastiCache 集群?
Redis 引擎版本不支持目标节点类型
某些节点类型需要更高版本的 Redis 引擎。有关更多信息,请参阅支持的节点类型。
请首先升级 Redis 引擎版本,然后再升级到节点类型。
将 ApplyImmediately 参数设置为 false
如果 ApplyImmediately 参数设置为 false,则对复制组中节点的更改将在下次维护重启或下次故障重启(以先到者为准)时应用。如果更改必须立即生效,请将此参数设置为 true。
**注意:**节点类型更改所需的时间取决于节点类型和集群中的数据量。最佳实践是在集群的流量处于最低水平时执行升级。
节点利用率过高
在修改期间,集群上的繁重工作负载可能干扰 ElastiCache 工作流。最佳实践是在数据流量处于较低水平的时段启动节点修改。