redis哨兵模式

设置的哨兵模式和其他redis服务器相同,只不过不能做存储等处理

哨兵也是 Redis 服务器,只是它与我们平时提到的 Redis 服务器职能不同,哨兵负责监视普通的 Redis 服务器,提高一个服务器集群的健壮和可靠性。哨兵和普通的 Redis 服务器所用的是同一套服务器框架,这包括:网络框架,底层数据结构,订阅发布机制等。

·        监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

·        提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

·        自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master.

每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).

若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.


哨兵群中拥有首领

总结了一下选举哨兵首领的过程:

  1. 遍历哨兵表中的所有哨兵,统计每个哨兵的得票情况,注意,得票哨兵的版本号必须和执行故障修复哨兵的配置版本号相同,这样做是为了确认执行故障修复版本号已经将自己的版本告诉了其他的哨兵。【这里在画图的时候可以说明白,其实低版本号的哨兵是没有机会进行故障修复的】
  2. 计算得票最多的哨兵
  3. 执行故障修复的哨兵自己给得票数最高的哨兵投一票,如果没有投票结果,则给自己投一票。当然投票的前提还是配置版本号要比自己的高。
  4. 再次计算得票最多的哨兵
  5. 满足两个条件:得票最多的哨兵的票数必须超过选举数的一半以上;得票最多的哨兵的票数必须超过主机的法定人数(quorum)。

是一个比较曲折的过程。最终,如果确定当前执行故障修复的哨兵是首领,它则可以进入下一个状态:SELECT_SLAVE。

SELECT_SLAVE

SELECT_SLAVE 的意图很明确,因为当前的主机(master)已经挂了,需要重新指定一个主机,候选的服务器就是当前挂掉主机的所有从机(slave)。

sentinelTimer()-»sentinelHandleDictOfRedisInstances()-»sentinelHandleRedisInstance()-»sentinelFailoverStateMachine()-»sentinelFailoverSelectSlave()-»sentinelSelectSlave() 
  
  

你可以看到详细的选举过程。

当前执行故障修复的哨兵会遍历主机的所有从机,只有足够健康的从机才能被成为候选主机。足够健康的条件包括:

  1. 不能有下面三个标记中的一个:SRI_S_DOWN|SRI_O_DOWN|SRI_DISCONNECTED
  2. ping 心跳正常
  3. 优先级不能为 0(slave->slave_priority)
  4. INFO 数据不能超时
  5. 主从连接断线会时间不能超时

满足以上条件就有机会成为候选主机,如果经过上面的筛选之后有多台从机,那么这些从机会按下面的条件排序:

  1. 优选选择优先级高的从机
  2. 优先选择主从复制偏移量高的从机,即从机从主机复制的数据越多
  3. 优先选择有 runid 的从机
  4. 如果上面条件都一样,那么将 runid 按字典顺序排序

所选用的排序算法是常用的快排。这是一个比较曲折的过程。如果没有从机符合要求,譬如最极端的情况,所有从机都跟着挂了,那么故障修复会失败;否则最终会确定一个从机成为候选主机。从机可以进入下一个状态:SLAVEOF_NOONE。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值