redis设计与实现第三部分读书笔记

第十六章 Sentinel(哨兵)

1.Sentinel(哨兵)是redis高可用的解决方案:由一个或者多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器下面的从服务器,并在被监视的主服务器下线时自动将下线主服务器的某个从服务器升级为新的主服务器。

d

2.当master的下线时长超过设定的上限时,Sentinel系统就会对master做故障转移处理:
   1.首先Sentinel系统会挑选master的一个slave,并将slave升级为新的master。
   2.之后Sentinel会向原master的所有slave发送新的复制命令,让它们称为新的master的slave,当所有slave开始复制新的master时,故障转移操作结束。
   3.Sentinel会监视已经下线的原master,并在它重新上线的时候把它设置为slave。
3.Sentinel本质上只是一个运行在特殊模式下的redis服务器。
4.Sentinel的启动配置等了解即可:Sentinel会读取用户指定的配置文件,为每个要被监视的master创建相应的实例结构,并创建连向master的命令连接和订阅连接。
5.Sentinel默认10S一次向被监视的master发送INFO命令,并根据回复信息获取master的当前信息。回复数据中包含master本身的信息,包括id和role,还包括master下所有slave的信息,包括ip,port等。当Sentinel发现master有新的slave出现时,会为这个新的slave创建相应的实例结构,还会创建连接到这个slave的命令连接和订阅连接。创建命令连接后会默认10S一次发送INFO命令,slave收到后回复数据中包含id,role,master的ip和port,连接状态,优先级,复制偏移量等。。

6.对于监视同一个主服务器和从服务器的多个Sentinel来说,它们会以每两秒的频率通过向被监视服务器的__sentinel__:hello频道发送信息来向其他Sentinel宣告自己的存在。每个Sentinel也会从__sentinel__:hello频道中接收其他sentinel发来的信息,并根据这些信息为其他的sentinel创建相应的实例结构,以及命令连接(没有订阅连接)
7.默认情况下Sentinel会1S一次向所有创建了命令连接的实例发送PING命令,并根据回复来判断是否在线。如果连续50000毫秒(默认)master都向Sentinel发送无效回复,则会被标记主观下线。当将一个master标记为主观下线之后,Sentinel会向其他监视这个master的Sentinel进行询问,等Sentinel从其他Sentinel那里接收到足够多(设置选项)的下线判断后,会标记为客观下线,并执行故障转移。
8.选举领头Sentinel:当master被判断客观下线后,监视它的所有Sentinel会选举出一个领头Sentinel来执行故障转移操作。具体规则:
     1.所有在线的Sentinel都有被选举资格。
     2.每次进行Sentinel选举后,不管是否成功,所有Sentinel的配置纪元会+1.
     3.在一个配置纪元内,所有Sentinel都有一次机会将某个Sentinel设置为局部领队,并且设置完成后不能修改。
     4.每个发现了master进入客观下线的Sentinel都会要求其他的将自己设置为局部领队。
     5.Sentinel设置领队的规则是先来先得,最早发送请求的就投票给他,之后的会被拒绝。
     6.如果某个Sentinel被半数以上的选举了,就会成为领队,不然就再来一次。
9.选举完成后,领队Sentinel将对已下线的master进行故障转移操作:
     1.在已下线的master的所有slave中挑选一个作为新的master。
     2.将其他slave复制新的master。
     3.将下线的master设置为新master的slave。
10.选举新master的算法:
     1.领队Sentinel会将下线master的所有slave保存在一个列表中,然后删除所有下线或者断线的slave。
     2.删除所有5秒内没有回复过Sentinel的INFO命令的slave。
     3.删除所有与下线master连接断开超过down-after-milliseconds * 10的slave。
     4.之后Sentinel根据slave的优先级选取最高的作为master。如果优先级相同,则选复制偏移量最大的。如果复制偏移量都一样,则选id最小的。

猜你喜欢

转载自www.cnblogs.com/love17311706/p/12024652.html
今日推荐