高可用性

本页介绍了标准层级中的 Memorystore for Redis 实例的高可用性。标准层级通过复制和自动故障转移功能提供高可用性。Memorystore for Redis 并非使用 Redis Sentinel 来实现高可用性。

什么是高可用性

Memorystore for Redis 通过将主 Redis 节点复制到副本节点来提供高可用性。副本节点是主节点的副本,用于复制对主节点所做的任何更改。

标准层级中的每个 Memorystore for Redis 实例均自动配置为一个主实例和副本对。副本用作备份,必须与主实例分处不同的区域。应用请求会定向到主实例。对主实例数据所作的更改通过 Redis 异步复制协议复制到副本。

高可用性有何用途

如果主节点发生故障,则 Memorystore for Redis 服务会触发故障转移。该服务将副本升级为新的主节点,恢复后,之前的主节点将成为副本。从本质上讲,节点切换了角色。

为了应对区域故障,主节点和副本节点要位于同一地区的不同区域中。

标准层级实例会在单个节点发生故障时保留实例数据,因为数据会在未发生故障的节点中备份。如果多区域故障导致主节点和副本节点同时发生故障,则无法恢复数据。

什么情况下会触发故障转移

当主 Redis 节点发生故障时,系统会进行故障转移。在故障转移期间,对新的主节点发出的所有请求都会自动重定向到副本,而 Memorystore for Redis 实例会继续响应您的应用。

故障转移对应用有何影响

当主节点故障转移到副本时,到 Memorystore for Redis 的现有连接会断开。但是,一旦重新连接,您的应用即会使用相同的连接字符串或 IP 地址自动重定向到新的主实例。您无需在故障转移后更新应用。

虽然 Memorystore for Redis 服务会将副本提升为主实例,但您的 Memorystore for Redis 实例暂时不可用。每个节点都位于单个地区中,因此地区性故障可能导致恢复时间延长。在此期间,数据仅有一个副本。

在故障转移后重试实例连接

故障转移始终会导致连接中断。因为主实例和副本在内部交换角色和 IP 地址,所以需要这样做。但是,您仍必须使用实例的静态 IP 地址访问 Redis 实例。

由于连接中断,因此您的应用需要重试才能重新建立连接。重试逻辑应使用指数退避算法,以确保您不会因重试请求过多而导致实例过载。除了包含重试逻辑之外,您还应通过使用手动故障转移进行测试来测试故障转移对应用有何影响。

大多数 Redis 客户端都内置了重试功能,您应该在故障转移引起连接中断时利用该功能。

在以下情况下会发生故障转移:

如果您在应用中实现重试逻辑来处理故障转移引起的连接中断,您的实例应该会发现未对性能产生重大影响。 通常,发生问题的原因仅仅是没有配置重试逻辑。

如何查看高可用性的状态

您可以使用 Google Cloud 的运维套件查看 Redis 实例的高可用性指标。如需了解 Google Cloud 的运维套件为 Memorystore for Redis 提供的指标,请参阅监控 Redis 实例。 如需详细了解如何将 Google Cloud 的运维套件与 Google Cloud 配合使用,请参阅 Stackdriver Monitoring 文档

如需查看 Redis 提供的本机复制状态,您可以向 Memorystore for Redis 实例发出 Redis INFO 命令

后续步骤