Redis哨兵模式

文章目录

  • 1.redis哨兵
  • 2.实战
  • 3 .运行原理

1.redis哨兵

吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务

  1. 主从监控:监控主从redis库运行是否正常
  2. 消息通知:哨兵可以将故障转移的结构发送给客户端
  3. 故障转移:如果master异常3,则会进行主从切换,将其中一个slave作为新master
  4. 配置中心:客户端通过连接哨兵来获取当前Redis服务的主节点地址

2.实战

/myredis目录下新建或者拷贝sentinel.conf文件,名字绝对不能错

sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel auth-pass<master-name> <password>:设置master密码

一台哨兵

bind 0.0.0.0
daemonize yes
proctected-=node no
port 26379
logfile "/myuredis/sentinel26379"
pidfile /var/run/redis-sentinel26379.pid
dir /myredis
sentienl monitor mymaster 192.168.111.185 6379 2
sentienl auth-pass mymaster 123456

启动 redis-sentinel sentinel26379.conf --sentinel
master-slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发送改变,即master_redis.conf中会多一行slaveof的配置,sentinel.con的监控目标会随之调换

3 .运行原理

SDown主观下线:SDOWN主观不可用是单个sentinel自己主观检查到的关于master的状态,从sentinel的角度来看,如果发送ping心跳后,在一定时间内没有收到合法的回复,就达到了SDOWN的条件。
sentinel配置文件中的down-after-milliseconds设置判断主观下线的时间长度
客观下线ODown需要一定数量的sentinel,多个哨兵达成一致意见才能认为一个master客观上已经挂掉
Raft算法选出主哨兵

兵王开始推动故障切换流程并选出一个新master:

  1. 新主登基:谁的权限高,谁的复制偏移高,run id
  2. 群臣俯首:执行slaveof no one 命令让选出来的从节点成为新的主节点,并通过slave of命令让其他节点成为其从节点;sentinel leader会对选举出的新master执行slaveof no one 操作,将其提升为master节点;sentinel leader向其他slave发送命令,让剩余的slave成为新的master节点的slave。
  3. 旧主拜服:老master回来也是sentinel;将之前已下线的老master设置为新选出的新master的从节点,当老master重新上线后,它会成为新的master的从节点;sentinel leader会让原来的master降级为slave并恢复正常工作

你可能感兴趣的:(Redis,redis,数据库)