一、原理
哨兵模式就是在主从配置好的基础上,再添加几个哨兵来监控主节点,当主节点宕机之后,再自动推选出一个从节点来替代主节点。
哨兵监控主节点和从节点,当一个哨兵监控到从节点宕机之后,就会将此从节点的状态改为失效。
当监控到主节点宕机之后,还需要通知其它的哨兵进行投票,投票通过再将主节点改为失效。
哨兵有两个作用:
1、过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
2、当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
二、Redis配置哨兵模式
1、首先配置Redis的主从服务器,修改redis.conf文件如下
从服务器中配置所属的主服务器地址: slaveof ip:port,账号和密码等。
主从复制只需要在从服务中进行配置。
2、在Redis安装目录下有一个sentinel.conf文件,配置3个哨兵(三份sentinel.conf文件),每个哨兵的配置都是一样的。
#禁止保护模式
protected-mode no
#配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,
可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,
2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 192.168.11.128 6379 2
#sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
#sentinel auth-pass
sentinel auth-pass mymaster 123456
主要是配置哨兵监控的主节点是哪个,多少个哨兵发现此主节点宕机了才执行failover操作(宕机的主节点状态改为失效,新推选出一个主节点,自动更新其它子节点的配置信息,让其它子节点认这个新的主节点)
三、Java中使用哨兵模式
配置文件配置哨兵节点地址
代码里面直接用StringRedisTemplate ,就会连接到哨兵集群,
哨兵集群去找监控的主节点写入。
如果是读取操作则会找多个子节点复制均衡。