redis哨兵
哨兵巡查监控后台master主机是否故障,如果故障了,根据投票数自动将某一个库转换为新主库,继续对外提供服务
主要作用
主从监控: 监控主从redis库是否运行正常
消息通知: 哨兵可以将故障转移的结果发送给客户端
故障转移: 如果master异常,可以进行主从切换
配置中心: 客户端通过连接哨兵来获得当前reids的主节点地址
redis架构说明
三哨兵,一主二从
哨兵只负责监控和维护集群,不存入数据
哨兵的配置文件和数据库是不一样的
配置文件参数说明
sentinel monitor <master-name> <ip> <redis-port> <quorum>
设置要监控的master服务器
quorum表示最少有几个哨兵认可客观下线,同意故障迁移的法定票数
哨兵运行的时候会在配置文件写入数据
配置文件最好一个实例一个文件
宕机的节点重连之后会成为slave节点
两个小问题
主节点断开之后从节点可能会出现
sever closed the connection
broken pipe
broken pipe通常是对端的管道断开,无法再对这个管道进行读写操作
该异常产生的时候对服务端没有多大影响
哨兵运行原理和选举原理
三哨兵监控一主二从
主观下线sdown:
单个sentinel检测到关于master的状态,从sentinel角度来看,如果发送了ping心跳后,在一定时间内没有收到回复,就达到了sdown条件
sentine配置文件中的down-after-milliseconds设置了判断主观下线的时长
默认30s
客观下线odown:
多个哨兵达成一致的意见就认为下线了
选举出领导者哨兵leader:
三个哨兵中选一个来执行slave到master
日志中可以看到选举过程
raft算法选举出来的领导者
自动故障切换并选出新master
选举算法:
priority权限:
谁高谁变成新master
redis.config文件中,优先级slave-priority或者replica-priority最高的从节点(数字越小优先级越高)
replication offset偏移量:
谁的偏移量大谁变成新master
run id:
最小run id的从节点 字典顺序:ascii码