redis健康检查与故障转移
哨兵三个定时监控任务
- 每隔10s每隔sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构
- 每隔2S,每个sentinel节点会向redis数据节点的__sentiel__:hellp发送sentinel节点信息,用于了解新节点相关信息,如果是新节点则将其保存下来。并与其建立连接。
- 每隔1S,每隔sentinel节点会向主节点和从节点其余的sentinel节点发送平命令作为心跳监测,来确定这些节点是否可达。
总结
- 每隔10s发送获取拓扑心跳
- 每隔2S获取新节点数据
- 每隔1S监测节点和哨兵通信正常
下线规则
- 主观下线:涉及down-after-millseconds参数,如果某一个哨兵与某一个redis节点在这个参数时间中没有连接成功,则说明有问题,则下线
- 客观下线:如果通过主观下线的是主节点的时候,由于涉及到后面的leader选举,则需要进行客观判断,,通过参数
is-master-down-by-addr向所有的哨兵节点询问,如果大部分都认为该节点有问题,则进行下线操作。
sentinel选举
Raft
- 发送
is-master-down-by-addr进行要求将自己设置为leader. - 收到命令的sentinel会判断,如果其没有同意过其他的sentinel节点的命令则同意,否则拒绝
- 如果该sentinel发现自己的票数大于等于max(quorum,num(sentinels)/2);则将成为领导者
- 将进入下一次选举
总结 选举的过程非常快,基本上谁先完成客观下线,则谁就是领导者
故障转移
当sentinel选举完成后,需要对数据进行同步,则会出现选举redis主节点
- 过滤(主观下线,断线)的节点
- 选择slave-priority优先级搞的节点列表,如果存在则返回,不存在则继续
- 选择复制偏移量最大的从节点,如果存在则返回,不存在则继续
- 选择runid最小的从节点
总结 过滤无用节点->选择优先级高->选择偏移量大->选择runid最小
redis健康检查与故障转移的更多相关文章
- 部署AlwaysOn第三步:集群资源组的健康检测和故障转移
资源组是由一个或多个资源组成的组,WSFC的故障转移是以资源组为单位的,资源组中的资源是相互依赖的.一个资源所依赖的其他资源必须和该资源处于同一个资源组,跨资源组的依赖关系是不存在的.在任何时刻,每个 ...
- 【Redis】集群故障转移
集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线.与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLU ...
- 【Consul】关于健康检查的一点思考
健康检查是Consul提供的一项主要功能,其配置格式如下: { "check": { "id": "redis", "name&q ...
- CentO7 安装 redis, 主从配置,Sentinel集群故障转移切换
一.Redis的安装(前提是已经安装了EPEL) 安装redis: yum -y install redis 启动/停止/重启 Redis 启动服务: systemctl start re ...
- Redis源码解析:28集群(四)手动故障转移、从节点迁移
一:手动故障转移 Redis集群支持手动故障转移.也就是向从节点发送"CLUSTER FAILOVER"命令,使其在主节点未下线的情况下,发起故障转移流程,升级为新的主节点,而原 ...
- Redis源码解析:23sentinel(四)故障转移流程
十:故障转移流程中的状态转换 当哨兵针对某个主节点进行故障转移时,该主节点的故障转移状态master->failover_state,要依次经历下面六个状态: SENTINEL_FAILOVER ...
- docker搭建redis集群和Sentinel,实现故障转移
0.引言 公司开发需要用到redis,虽然有运维自动搭建,还是记录下如何搭建redis集群和Sentinel. 采用的是vagrant虚拟机+docker的方式进行搭建. 搭建思路: 首先是借鉴下其他 ...
- 【Redis】Redis Cluster-集群故障转移
集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线.与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLU ...
- 为什么很多人用keepalived来实现redis故障转移
目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.Redis作者有一个名为Redis Sentinel的计划 ,据称将会有监控,报警和自动故障转移三大功能,非 ...
随机推荐
- Day 5-7 exec 和元类的创建.
exec方法 元类 exec(str_command,globals,locals)参数1:字符串形式的命令参数2:全局作用域(字典形式). 如果不指定,默认globals参数3:局部作用(字典形式) ...
- String类内存空间详解
java.lang.String类内存问题详解 字符串理解的难点在于其在堆内存空间上的特殊性,字符串String对象在堆内存上有两种空间: 字符串池(String pool):特殊的堆内存,专门存放S ...
- SQL Server2012中时间字段为DateTime和VarChar的区别
在设计数据库的时候varchar类型是一个非常常见的类型,很多字段都可以使用这个类型,所以有时候在设计数据库的时候就很容易习惯性设计该类型,比如说时间类型,我们既可以DateTime类型,又可以使用v ...
- 一个加载时带动画效果的ListBoxItem
今天我们来谈一下ListBoxItem这个控件,ListBoxItem是直接从ContentControl继承而来的,所以可以添加到任何具有Content属性的控件中去,常见的ListBoxItem可 ...
- Java并发编程之ThreadGroup
ThreadGroup是Java提供的一种对线程进行分组管理的手段,可以对所有线程以组为单位进行操作,如设置优先级.守护线程等. 线程组也有父子的概念,如下图: 线程组的创建 public class ...
- mongodb3的使用
1.在windows下载安装mongodb 将下载好的zip压缩文件解压并重命名为mongo-3.0.6,并在根目录下新建文件夹data用于存放数据 2.启动mongod守护进程 使用命令mongod ...
- jmeter元素
1 test plan functional test mode 选择项:如果勾选 jmeter 会记录从服务器返回的响应数据,如果监视器-选择了文件-则会保存到对应文件 测试jmeter是否配置正确 ...
- Apache的commons工具类
package cn.zhou; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileU ...
- python之对字符串类型的数组求平均值
该字符串是在网页表格中复制的,所以数字间由制表符间隔,先将其转换成列表,再进行统计计算.代码如下: str = "-18.1 -18.3 -18 -18.2 -18 -17.4 -18 -1 ...
- 部署crm项目
准备工作 使用xftp将项目传到linux 将knight 传到linux上 将项目的数据导出 mysqldum -uroot -p --all-database > alldb.dump 在w ...