本页介绍标准层级 Memorystore for Redis 实例的高可用性。
概览
标准层级通过将数据复制到一个或多个副本以及快速地自动故障切换到副本,保护 Redis 实例免受常见故障的影响。
标准层级预配一个主节点和一个或多个副本节点。停用了 readReplicaMode
的标准层级实例有一个非读取副本。启用了 readReplicaMode
的标准层级实例有一到五个读取副本。如需确定是否启用了 readReplicaMode
,请参阅查看读取副本信息。
Memorystore for Redis 通过将主 Redis 节点复制到一个或多个副本节点来提供高可用性。对主节点数据所作的更改通过 Redis 异步复制协议复制到副本。复制的异步特性导致副本可能会滞后于主节点,具体取决于主节点上的写入速率。
主节点发生故障时,实例会自动故障切换到副本。配置了多个副本的实例会自动故障切换到具有最小复制延迟的健康副本。
如果实例只配置了一个非读取副本,则所有应用连接都会定向到主端点。如果使用读取副本配置实例,应用还可以利用读取端点在所有副本之间分布读取查询。
什么情况下会触发故障切换
当主 Redis 节点发生故障时,系统会进行故障切换。在故障切换期间,主端点和读取端点会自动重定向到新的主节点和副本。主端点的所有连接都会中断,读取端点与提升的读取副本之间的连接也会中断。
故障切换对应用有何影响
当主节点故障切换到副本时,实例主端点的现有连接将中断。在新的主节点重新连接时,实例会有几秒钟不可用。但是,一旦重新连接,应用便可自动重定向到使用原先的连接字符串或 IP 地址的新主节点。您无需在故障切换后更新应用。
在故障切换期间,如果读取端点存在连接,则提升为主节点的副本的连接将中断,但与其余副本的连接将继续存在。故障切换完成并且新的副本可用后,连接将重定向到新副本。
在故障切换后重试实例连接
发生故障切换时,来自主端点的所有连接都会被舍弃,某些读取连接会终止(具体取决于副本的数量)。
由于连接中断,因此您的应用需要重试才能重新建立连接。重试逻辑应使用指数退避算法,以确保您不会因重试请求过多而导致实例过载。除了包含重试逻辑之外,您还应通过使用手动故障切换进行测试来测试故障切换对应用有何影响。
大多数 Redis 客户端都内置了重试功能,您应该在故障切换引起连接中断时利用该功能。
在以下情况下会发生故障切换:
如果您在应用中实现重试逻辑来处理故障切换引起的连接中断,则实例性能应该不会受到重大影响。通常,发生问题的原因仅仅是没有配置重试逻辑。
如何查看高可用性的状态
您可以使用 Cloud Monitoring 查看 Redis 实例的高可用性指标。如需了解 Cloud Monitoring 为 Memorystore for Redis 提供的指标,请参阅监控 Redis 实例和监控指标。
如需详细了解如何将 Google Cloud 的运维套件与 Google Cloud 配合使用,请参阅 Cloud Monitoring 文档。
如需查看 Redis 提供的本机复制状态,您可以向 Memorystore for Redis 实例发出 Redis INFO 命令。