5.redis 哨兵Sentinel相关知识

120 阅读1分钟
  1. 什么是Sentinel?

    一种哨兵机制,当master宕机后,通过选举机制选举出新的master提供服务。

  2. Sentinel有什么用?

  • 监控:本身和redis主从状态
  • 故障转移:提供master宕机后,自动将其他salve转换成master提供服务
  • 通知:通知其他slave节点进行连接新的master
  • 配置更新:Java客户端连接sentinel获取master信息,会拿到最新的信息。
  1. Sentinel是如何实现故障转移的?

    如果master出现故障,从slave中选举出一个新的master,并执行一些相关工作,比如通知slave新的master信息,连接新的master。

  2. Sentinel如何检测节点是否下线?

  • 主观下线:通过ping命令发现master/slave下线
  • 客观下线:Sentinel集群都发现master/slave下线

5.为什么建议部署多个sentinel节点?

防止误判,当集群内一半以上的节点判断该节点都下线了,那这个节点真的下线了。

6.如何从Sentinel集群中选择出Leader?

通过共识算法Raft

7. Sentinel可以防止脑裂吗?(也就是网络被分区后数据同步问题)

可以,有两个参数可以设置。

  • min-replicas-to-write: 1判断写入的slave节点数是否大于等于该数,不大于则停止接收写入命令
  • min-replicas-max-lag: 10 判断master多长时间得不到从节点的响应,就认为节点失联了,停止接收写入命令

8.Sentinel如何选取出新的master?

  • slave优先级:设置slave的优先级,越大的就是master,相等向下判断
  • 复制进度,谁复制的最接近master,就优先,相等向下判断
  • run(id)大小,小的优先