redis学习笔记(16)哨兵模式
1、哨兵模式的功能
- 监控(Monitor):哨兵(sentinel)会不断地检查系统的master和slave是否运行正常。
- 提醒(Notification):当监控某个哨兵出现了问题的时候,哨兵可以通过api向程序和管理员发送请求。
- 自动故障迁移(automatic failover):当系统中的一个master不能工作时候,这个时候哨兵(sentinel)会自动进行故障转移操作,它会将master系统中的一个slave自动生成master,当客户端对已经失效的master时候,这个时候我们的新的master会自动替换到原来失效的master。
每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).
若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.
2、实现流程
1)创建sentinel.conf文件,名称不能错,文件内容如下:
# 禁止保护模式 protected-mode no # 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。 sentinel monitor mymaster 127.0.0.1 6380 1 # sentinel author-pass定义服务的密码,mymaster是服务名称,236300是Redis服务器密码 # sentinel auth-pass <master-name> <password> sentinel auth-pass mymaster 236300
2)启动哨兵进程
./redis-sentinel ../sentinel.conf
3、故障恢复
优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。
偏移量:指获得原主机数据最全的概率。
runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。
参考:Redis哨兵(Sentinel)模式 - 简书 (jianshu.com)
参考:Redis | ZC 的学习录 (zhangc233.github.io)