哨兵机制 Redis Sendtinel
大约 1 分钟
哨兵机制 Redis Sendtinel
哨兵的核心功能是主节点的自动故障转移
哨兵机制原理
- 哨兵之间集群建立、哨兵与主从库连接建立
哨兵实例之间可以相互发现,要归功于 Redis 提供的 pub/sub 机制,也就是发布 / 订阅机制,他们共同订阅Redis的同一个频道,获取对方的IP和端口号从而建立网络连接
每个哨兵发送INFO给主库,收到从库列表,进而与从库建立连接
- 哨兵之间通讯 send is-master-down-by-addr 收到的Y/N判定各个哨兵主观下线是否存在
赞成票数如果大于或者等于哨兵配置之中的 quorum 配置项,则客观下线
哨兵选举
Raft选举算法: 选举的票数大于等于num(sentinels)/2+1时,将成为领导者,如果没有超过,继续选举
1主4从,5个哨兵,3个哨兵故障,主库宕机,只能标记主库下线,无法完成主从切换,为什么
哨兵只能获得2票没法获取 5/2 + 1= 3票
新主库的选出
1. 选择redis.conf.salve-priority从节点优先级最高的
2. 选择复制偏移量最大,只复制最完整的从节点
哨兵如何切换从库为主库的呢
sentinels-3通知client切换主库
新主库执行 slaveof no one
其他从库执行 slaveof new master