redis -sentinel(哨兵)
1.使用背景:
# Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用:
一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。 扩展主节点的读能力,分担主节点读压力。
# 但是问题是:
一旦主节点宕机,从节点上位,那么需要人为修改所有应用方的主节点地址(改为新的master地址),还需要命令所 有从节点复制新的主节点
那么这个问题,redis-sentinel就可以解决了
# 而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群,自动发现master宕机,进行自动 切换slave > master。
2.功能实现:
1.不时的监控redis是否良好运行,如果节点不可达就会对节点进行下线标识
如果被标识的是主节点,sentinel就会和其他的sentinel节点“协商”,如果其他节点也人为主节点不可达,就会选举 一个sentinel节点来完成自动故障转义
2.在master-slave进行切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改 变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
具体实现:
1.多个sentinel发现并确认master有问题
2.选举出一个sentinel作为领导
3.选出一个slave作为master
4.通知其余的slave成为新的master的slave
5.通知客户的主从变化
6.等待老的master复活成为新的master的slave
程序的道路上一去不复返