Redis之sentinel

sentinel是redis 高可用的一种架构,主要是由多个sentinel组成监视系统,可以监视多个主从服务器,在他们下线的时候 进行自动切换升级。

sentinel启动的时候和启动主从并无特别大的区别

sentinel 每隔10秒向主服务器发送心跳,通过命令监视返回主服务器的INFO信息,主要由两个作用:

1、监控master是否存活

2、解析返回的INFO信息,并且把其中有关slave的信息存到sentinel的字典中。

当sentinel发现主服务器中有新的从服务器的时候,会为这个从服务器创建对应的实例结构并且创建对从的连接。

主观下线:

所谓的主观下线:就是发起ping的sentinel在down-after-milliseonds之后仍没有收到响应的请求就认为该服务下线了。down-after-milliseconds 对master、slave、其他的sentinel都有效。

客观下线:

当一个sentinel将主服务器判定为主观下线后,他会向同时监控这个主服务器的其他sentinel发一条命令询问他们的意思,看是不是也判定为下线,主要够一定数量就被标记为客观下线,数量主要是由sentinel monitor master 127.0.0.1 6379 5 其中这个5代表5个sentinel返回下线。

要讲终点了。

当某个master被标记为客观下线,总要要充当该角色的服务器,此时,这帮sentinel会重新协商,选出一个sentinel牵头完成新master的选举工作。

那么就有了选举sentinel的规则:

当认为主服务器已经下线,这时

1、每个sentinel都会向其他的sentinel发送一个is-master-down-by-addr,在这个命令里面包含了自己的run_id.

2、每个收到请求命令的sentinel只会检测自己是否已经把宝贵的一票投给了其他sentinel,如果没有则投给该sentinel,并且把自己的配置纪元(就是个计数器)加1,每次选举只能投1票。

3、在给定的时间内,投票完毕后,每个sentinel各自统计得票,得票一半以上的将胜出成为牵头人。如果没有的话。就再次选举,直到选举出来为止。

在选举出来sentinel后,下一步要从下线的主服务器的从节点中找出来一台升级为主,开始故障转移。

选主的条件:

1、删除sentinel自己的字典中已经下线的从服务器

2、删除上时间没有跟自己互动的从服务器(机器的世界也讲跟领导的关系)

3、删除所有跟下线主服务器断开连接超过down-after-milliseconds * 10 的从服务器

4、选择跟主服务器断开时间最短的从服务器或者偏移量最大的升级为主服务器

选出来新主后,把角色改为主,并且通知所有的从修改其配置,从新的主节点同步数据。

此外还要监控刚刚被客观下线的主服务器,等他上线后,修改他的配置为从。让他向新的主服务器称臣并且同步。

所以说,江湖险恶,远离是非是不可能的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值