1,Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用:
1.1 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。
1.2 扩展主节点的读写能力,分担主节点读压力。
但是问题来了:
一旦主节点宕机,从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。
2,redis主节点挂掉之后需要操作下面命令
slave no one #取消主备,更改为主节点
slaveof 新host 新节点 #将其它节点设置为新主节点的备份节点
3,Sentinel正是实现了这个功能
4,开启Sentinel配置
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
5,启动Sentinel
/usr/local/soft/redis5/bin/redis-sentinel sentinel.conf
6,查看状态
info replication
7,Sentinel三大工作任务
7.1 监控: Sentinel会不断地检测你的主服务器和从服务器是否运作正常。
7.2 提醒: 当被监控的某个redis出现问题时,Sentinel可以通过API向管理员或其它应用程序发送通知。
7.3 自动故障转移:当一个主服务器不能正常工作时,Sentinel会开始一次自动故障转移操作,它会将失效的主服务器的其中一台从服务器升级为新的主服务器,并让失效主服务器的其它从服务器改为复制新的主服务器,当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
8 Sentinel是如何工作的?
8.1 主观下线
指的是单个Sentinel实例对服务器做出的下线判断
如果一个服务器没有在master-down-after-milliseconds选项所指定的时间内,对向他发送PING命令的Sentinel返回一个有效回复,那么Sentinel就会将这个服务器标记为主管下线
服务器对PING命令的有效回复为以下其中一种:
返回 +PONG
返回-LOADING错误
返回-MASTERDOWN错误
8.2 客观下线
指的多个Sentinel实例在对同一个服务器做出SDOWN判断,并通过SENTINEL is-master-down-by-addr 命令互相交流之后,得出的服务器下线判断。
从主观下线切换到客观下线并没有使用严格的法定人数算法,而是使用了流言协议:如果Sentinel在给定的时间范围内,从其它Sentinel那里接受到了足够数量的主服务器下线报告,那么Sentinel就会将主服务器的状态从主观下线改变为客观下线,如果之后其它Sentinel不再报告主服务器已下线,那么客观下线状态就会被移除。
客观下线条件只适用于主服务器:对于其它任何类型的redis实例,Sentinel在判断他们为下线前不需要进行协商,所以从服务器或者其它Sentinel永远不会达到客观下线条件,只要一个Sentinel发现某个主服务器进入了客观下线状态,这个Sentinel就可能会被其它Sentinel推选出,并对失效的主服务器执行自动故障迁移操作。
9 集成springboot
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
引入yml文件:
redis:
sentinel:
master: mymaster
nodes: 127.0.0.1:26379