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