故障切换
当上游 Redis 实例发生故障时,您需要先对复制组执行灾备故障切换,然后将客户端的访问地址切换到提升后的实例。
此操作步骤适用于 Redis 6.0 和 Redis 7.2 上的 Disaster Recovery 模式(spec.activeRedis.mode: peerof),在该模式下复制方向固定,其中一个实例为上游。
Active-Active 模式不包含此类故障切换步骤:每个成员都已处于活动状态并接受写入,因此从数据中心故障中恢复只需将客户端重定向到仍存活的成员即可。从网格中移除故障成员的操作请参阅移除成员。
复制组切换
在灾备组中,上游发生故障时,需要中断与故障上游之间的同步链路,并将下游端提升为上游,以确保客户端能够写入数据,同时避免故障上游中的脏数据污染下游实例。
故障切换时机说明
当复制组的上游发生故障时,下游端的 Alauda Cache Service E1 会检测到与上游之间的链路中断。此时,ActiveRedisConnection 资源的状态将变为异常,下游实例的 Web Console 会提示可以执行灾备切换。
灾备切换
查看连接状态
当 STATUS 为 Failed 时,表示实例 c6-dest 与上游之间的连接异常。您可以查看 yaml 详细信息以了解具体情况:
断开与上游的连接
手动确认上游确实异常后,需要断开下游实例与上游之间的链路,以防止引入脏数据。
删除相应的 ActiveRedisConnection 资源后,Redis 实例已成为独立的上游实例,此时可以安全地将客户端的访问地址切换到该实例进行读写。
删除连接时,会根据其 spec.teardownPolicy 拆除链路。请使用默认的 Detach,以便故障数据中心之后可以重新加入。仅当数据中心永久不可恢复时,才使用 Decommission——该操作不可逆,如果对端之后恢复,将强制执行完整重新同步。请参阅移除连接。
将故障上游用作新上游的下游
故障上游恢复正常后,可以将其作为提升后的上游的下游实例重新添加到复制组中。有关操作方法,请参阅设置灾备复制。
客户端灾备切换
在连接到复制组之前,客户端应支持在检测到上游故障后,将 Redis 访问地址切换到提升后的实例。通常有以下几种切换方式:
客户端是否触发灾备切换不能仅通过二元决策来判断;切换是一个多维度、高可信度的决策过程。需要结合多个维度的故障检测进行处理,包括但不限于:the available status of the instance、whether the instance still has high availability、whether the k8s cluster has the possibility of continuing to serve、data center availability detection。
通常,在客户端安全执行灾备切换之前,需要满足以下表达式:
Alauda Cache Service E1 当前不支持客户端灾备切换。客户需要根据自身基础设施实现合适的客户端切换方法。