Redis 哨兵高可用(Sentinel)

哨兵机制是 Redis 可用中重要的一环,其核心是 通过可用哨兵集群,监控主从复制的健康状态,并实现自动灾备

Redis 哨兵高可用(Sentinel)

哨兵集群以集群的方式进行部署,这种分布式特性具有以下优点:

避免系统中存在单点,防止灾备机制失效

切换 master 必须经过多个 sentinel 节点协商同意,避免出现误判

为了保证 Redis 服务的高可用,哨兵机制提供了以下功能:

监控Monitoring:实时监控主从节点的健康状况

通知Notification:通过事件 API 将服务实例异常情况即时告知监听者

自动灾备Automatic failover:当 master 节点失效时从 slave 中选举出新的 master

服务发现Configuration provider:客户端通过哨兵集群获取 master 实例信息,在发生自动灾备时能及时将 master 变化告知客户端

相关配置

建立哨兵集群的配置相对简单,只需配置以下选项即可:

sentinel monitor <master-name> <ip> <port> <quorum>

 需要监控的 master 节点的信息(由于 sentinel 会自动发现 slave 节点信息,因此无需配置)

master-name 用于区分不同的 master 节点,会被用于 master 发现

quorum 是启动故障转移failover时,所需的最小 sentinel 数量

 故障转移前需要选举出一个 leader 节点执行 master 切换,为了达成共识,该过程必须有半数以上的节点majority参与

 假设当前哨兵集群总共有 m 个节点,当 quorum 设置为 n 时(nm

若同时有 n 个节点判断当前 master 已经下线,则其中的某个 sentinel 会尝试发起故障转移

实际执行故障转移需要进行 leader 选举,因此仅当集群中至少有 m/2 以上的 sentinel 节点可用时,故障转移才可能启动

 简而言之,quorum 仅影响故障检测流程,用于控制发起故障转移的时机,但是无法决定 failover 是否会被执行
 因此,哨兵实例应不少于 3 个,否则一旦某个哨兵节点失效后,即便 quorum 设置为 1,依然无法启动 faiover

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppsdg.html