如何排除在 ElastiCache for Redis 自设计集群中进行失效转移后收到的 READONLY 错误?

1 分钟阅读
0

我想排除在 Amazon ElastiCache for Redis 自设计集群中进行失效转移后收到的 READONLY 错误。

简短描述

如果主节点失效转移到您的 ElastiCache 自设计集群中的副本节点,则副本节点将成为主节点。这样即可处理传入的请求。当您在应用程序中使用节点端点而不是集群的主端点时,就会发生 READONLY 错误。此外,当应用程序中的 DNS 缓存将流量路由到旧的主节点时,也会发生此错误。

解决方法

要解决您已禁用集群模式的 ElastiCache for Redis 自设计集群中的 READONLY 错误,请完成以下步骤:

检查集群模式是否已禁用

打开 ElastiCache 控制台,然后选择 Redis 集群。检查集群的集群模式是否已禁用。有关更多信息,请参阅如何在 ElastiCache for Redis 中处置重定向到分片主节点而不是副本节点的 Redis 客户端读取请求?

检查端点

确保使用主端点而不是节点端点。要检查写入命令针对的是否是主节点,请使用以下方法之一:

使用 redis-cli

  1. 使用主端点的 redis-cli 连接到集群。

  2. 设置密钥,然后读取密钥。
    示例:

    set key1 "hello"
    OK
  3. 确认密钥设置正确。
    示例:

    get key1
    "hello"

检查 DNS 设置

为防止 DNS 缓存出现问题,请在您的应用程序中启用重试逻辑。确保遵循所用 Redis 客户端库的指南。

检查传入的命令

要检查传入的命令,请使用 MONITOR 命令。有关更多信息,请参阅 Redis 网站上的 MONITOR。要启用 MONITOR,请使用 redis-cli 连接到集群。MONITOR 命令会列出集群节点的所有传入命令。
**注意:**MONITOR 命令是很耗资源,可能会严重降低节点性能。建议在故障排除时,除非万不得已,否则不要使用此命令。

AWS 官方
AWS 官方已更新 1 年前