Below you will find pages that utilize the taxonomy term “redis”
Posts
Redis 高可用(1)——Sentinel 篇
最近在学习 Redis 的高可用方案,就从 sentinel 开始。本篇文档基本只是 redis sentinel 官方文档的摘要和总结,感兴趣的直接阅读官方文档是更好的选择。
基本原理 Sentinel 的原理并不复杂:
启动 n 个 sentinel 实例,这些 sentinel 实例会去监控你指定的 redis master/slaves 当 redis master 节点挂掉后, Sentinel 实例通过 ping 检测失败发现这种情况就认为该节点进入 SDOWN 状态,也就是检测的 sentinel 实例主观地(Subjectively)认为该 redis master 节点挂掉。 当一定数目(Quorum 参数设定)的 Sentinel 实例都认为该 master 挂掉的情况下,该节点将转换进入 ODOWN 状态,也就是客观地(Objectively)挂掉的状态。 接下来 sentinel 实例之间发起选举,选择其中一个 sentinel 实例发起 failover 过程:从 slave 中选择一台作为新的 master,让其他 slave 从新的 master 复制数据,并通过 Pub/Sub 发布事件。 使用者客户端从任意 Sentinel 实例获取 redis 配置信息,并监听(可选) Sentinel 发出的事件: SDOWN, ODOWN 以及 failover 等,并做相应主从切换,Sentinel 还扮演了服务发现的角色。 Sentinel 的 Leader 选举采用的是 Raft 协议。 一张示意图,正常情况下: