一、介绍
Sentinel(哨兵、哨岗)是Redis的高可用性的解决方案,由一个或多个Sentinel实例(instance)组成的Sentinel系统可以监视多个主服务器,以及这些主服务器下的所有从服务器。
Sentinel监视的主服务器下线(断开连接)时,可以自动将该主服务器下的某个从服务器设置为新的主服务器,然后由新的主服务器代替断开连接的主服务器处理命令请求。
Sentinel系统监视服务器的例子如下:
该图中server1表示主服务器,server2、server3、server4表示主服务器下的从服务器,Sentinel系统监视这四个服务器。
如果此时server1进入下线状态,纳闷从服务器server2、server3、server4对主服务器的复制操作将被中止,并且Sentinel会察觉到server1已下线(sentinel通过用户设定的下线时长来判断,如果下线时长超过用户设定的下线时长,那么就判定该主服务器已下线),就会执行故障转移操作:
- 首先Sentinel会调整选server1下的一个从服务器,并将这个从服务器设定为主服务器。
- 之后Sentinel系统会向server1属下的所有从服务器发送新的复制指令,让它们成为新的主服务器的从服务器,当所有从服务器开始复制新的主服务器时,故障转移操作执行完毕。
- 另外,Sentinel还会继续监视已下线的server1,当它重新上线时,将它设定为新服务器的从服务器。
该过程的图示如下: