Redis哨兵机制
slave节点宕机恢复后可以找master节点同步数据,那master节点宕机了怎么办呢?
1. 哨兵的作用和原理
因为当master节点发生故障后,哨兵机制会选出一个slave作为新的master。这个时候RedisClient所连接的master和slave地址和端口发生了变化,如果RedisClient中的master和slave地址是写死的。发生master切换后,就无法正常连接或提供服务了。
因此,RedisClient会从Sentinel集群中获取redis集群中的master和slave地址。当master故障切换后,Sentinel会将变化后新的master和slave地址推给RedisClient,以此保障对客户端持续提供稳定的服务(master进行写操作,slave进行读操作)
服务状态监控
选举新master
故障转移
总结
2. 搭建哨兵集群
每个sentinel的配置文件:
3. RedisTemplate的哨兵模式
然后通过调用接口,进行redis的读和写操作:
- 通过查看打印日志,可以发现,当进行读操作的时候,连接的是redis集群中的slave节点,进行写操作时,连接的是master节点
当redis集群中master节点宕机了,sentinel会从在线的slave中选出新的master。当之前宕机的master节点再次上线,会成为新master的slave节点。而且整个过程中,redis集群中节点角色的变化会被sentinel监控到,sentinel会动态获取最新的主从节点信息。