哨兵模式:主要是配置sentinel.conf文件,指定主节点ip和访问密码,哨兵模式用于解决redis的主从模式下,主节点宕机后,选举从节点作为主节点的方案,哨兵是一台单独的redis机器或者哨兵redis集群(相同的sentinel.conf复制到多个哨兵redis),哨兵集群中的一个节点宕机,可以自动进行故障转移到正常哨兵节点(哨兵集群高可用),继续监控主节点和从节点的状态,当新的主节点被哨兵选举出来后,其他从节点会和主节点进行同步(可通过配置一个个和主节点同步,还是一批批的并行同步),如果之前宕机的主节点恢复后,只能作为当前主节点的从节点
哨兵节点查看主redis节点的信息命令:
sentinel master {主节点名称}:查看主节点信息
sentinel slaves {主节点名称}:查看这个主节点下的从节点信息
sentinel sentinels {主节点名称}:查看监控这个主节点哨兵信息
哨兵集群认为主节点宕机的依据:
根据quorum的值决定,比如默认是2,这意味着如果2个哨兵认为该主节点宕机了,就会选举从节点作为主节点(故障转移),quorum的值是 {哨兵集群的数量}/2 + 1,即超过集群数量半数,比如现在哨兵集群有5台节点,这quorum的值应该为3,刚好超过半数,防止脑裂
主从选举策略:
从节点集群中选择slave-priority配置最小的值那台从节点作为主节点,如果不存在slave-priority配置,这选择从节点集群中同步数据最多,偏移量最大的从节点作为主节点,如果还不存在,这选择runid最小的值作为主节点(即最新启动的从节点)
哨兵集群选举策略:
相互投票,如果谁的票数超过半数,这认为是哨兵集群的主节点(参考zookeeper集群运行时主节点宕机的选择策略,但zookeeper初始化集群选举主节点不是按照半数原则,而是按照sid)
注意:哨兵集群的选举策略是一种典型的过半选举策略(包括zookeeper,karfa都是采用的这种策略),这种要求参与选举的节点数应该是奇数个,以防止脑裂问题
注意:这里哨兵集群分主从,redis集群也分主从,他们的主节点宕机后,参考上面所说的选举策略进行选举主节点