哨兵三个定时监控任务

  1. 每隔10s每隔sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构
  2. 每隔2S,每个sentinel节点会向redis数据节点的__sentiel__:hellp发送sentinel节点信息,用于了解新节点相关信息,如果是新节点则将其保存下来。并与其建立连接。
  3. 每隔1S,每隔sentinel节点会向主节点和从节点其余的sentinel节点发送平命令作为心跳监测,来确定这些节点是否可达。

总结

  1. 每隔10s发送获取拓扑心跳
  2. 每隔2S获取新节点数据
  3. 每隔1S监测节点和哨兵通信正常

下线规则

  1. 主观下线:涉及down-after-millseconds参数,如果某一个哨兵与某一个redis节点在这个参数时间中没有连接成功,则说明有问题,则下线
  2. 客观下线:如果通过主观下线的是主节点的时候,由于涉及到后面的leader选举,则需要进行客观判断,,通过参数is-master-down-by-addr向所有的哨兵节点询问,如果大部分都认为该节点有问题,则进行下线操作。

sentinel选举

Raft

  1. 发送 is-master-down-by-addr进行要求将自己设置为leader.
  2. 收到命令的sentinel会判断,如果其没有同意过其他的sentinel节点的命令则同意,否则拒绝
  3. 如果该sentinel发现自己的票数大于等于max(quorum,num(sentinels)/2);则将成为领导者
  4. 将进入下一次选举

总结 选举的过程非常快,基本上谁先完成客观下线,则谁就是领导者

故障转移

当sentinel选举完成后,需要对数据进行同步,则会出现选举redis主节点

  1. 过滤(主观下线,断线)的节点
  2. 选择slave-priority优先级搞的节点列表,如果存在则返回,不存在则继续
  3. 选择复制偏移量最大的从节点,如果存在则返回,不存在则继续
  4. 选择runid最小的从节点

总结 过滤无用节点->选择优先级高->选择偏移量大->选择runid最小

redis健康检查与故障转移的更多相关文章

  1. 部署AlwaysOn第三步:集群资源组的健康检测和故障转移

    资源组是由一个或多个资源组成的组,WSFC的故障转移是以资源组为单位的,资源组中的资源是相互依赖的.一个资源所依赖的其他资源必须和该资源处于同一个资源组,跨资源组的依赖关系是不存在的.在任何时刻,每个 ...

  2. 【Redis】集群故障转移

    集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线.与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLU ...

  3. 【Consul】关于健康检查的一点思考

    健康检查是Consul提供的一项主要功能,其配置格式如下: { "check": { "id": "redis", "name&q ...

  4. CentO7 安装 redis, 主从配置,Sentinel集群故障转移切换

        一.Redis的安装(前提是已经安装了EPEL)   安装redis: yum -y install redis 启动/停止/重启 Redis 启动服务: systemctl start re ...

  5. Redis源码解析:28集群(四)手动故障转移、从节点迁移

    一:手动故障转移 Redis集群支持手动故障转移.也就是向从节点发送"CLUSTER  FAILOVER"命令,使其在主节点未下线的情况下,发起故障转移流程,升级为新的主节点,而原 ...

  6. Redis源码解析:23sentinel(四)故障转移流程

    十:故障转移流程中的状态转换 当哨兵针对某个主节点进行故障转移时,该主节点的故障转移状态master->failover_state,要依次经历下面六个状态: SENTINEL_FAILOVER ...

  7. docker搭建redis集群和Sentinel,实现故障转移

    0.引言 公司开发需要用到redis,虽然有运维自动搭建,还是记录下如何搭建redis集群和Sentinel. 采用的是vagrant虚拟机+docker的方式进行搭建. 搭建思路: 首先是借鉴下其他 ...

  8. 【Redis】Redis Cluster-集群故障转移

    集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线.与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLU ...

  9. 为什么很多人用keepalived来实现redis故障转移

    目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.Redis作者有一个名为Redis Sentinel的计划 ,据称将会有监控,报警和自动故障转移三大功能,非 ...

随机推荐

  1. web安全测试排查

    漏洞排查思路: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用WSockExper ...

  2. js-cookie和session

    ###1.cookie 含义: 存储在访问者的计算机中的变量,即存储在客户端 创建一个cookie /* getCookie方法判断document.cookie对象中是否存有cookie,若有则判断 ...

  3. react-router的坑

    componentWillReceiveProps(nextProps){ 在改钩子函数里接受组件变化的最近的传递的props 如果在这里没有使用nextprops 而是调用this.props 会出 ...

  4. react组件传值传方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. IdentityServer4【Topic】之定义客户端

    Defining Clients 定义客户端 客户端表示哪些可以从你的IdentityServer拿到token的应用. 除了一些可能会变化的细节之外,通常情况下你需要为一个客户端定义如下通用的设置: ...

  6. text-decoration、text-decoration-color、text-decoration-line、text-decoration-style属性

    text-decoration:over-line  定义上划线 text-decoration:line-through  定义删除线 text-decoration:underline  定义下划 ...

  7. JavaMail入门第一篇 邮件简介及API概述

    现如今,电子邮件在我们的生活当中扮演着越来越重要的角色,我们每个人几乎都会与其打交道(至少时不时我们都会接收到莫名其妙的垃圾邮件),在工作中,使用邮件进行交流沟通,可以使我们的工作有迹可循,也显的较为 ...

  8. WebStorm开发React项目,修代码之后运行的项目不更新

    昨天遇到一个恶心的问题,我新建了一个React.js项目,想做一点关于Pc端的开发,习惯性的用了WebStorm,可是发现一个问题,就是代码修改之后,浏览器上根本不会刷新.然后,我把方向定位在没有正确 ...

  9. 基于create-react-app的再配置

    前面的话 使用Facebook官方推出的create-react-app脚手架,我们基本可以零配置搭建基于webpack的React开发环境.但是,如果需要个性化定制,则还需要基于create-rea ...

  10. django--orm表自关联详解

    什么是表内自关联 表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段.同样表内关联也分一对多字段和多对多字段 例如:对于微博评论,每条评论都可能有子 ...