引入

  在主从模型中讲到

一旦Master宕机失效,需要手动将Slave角色提升为Master,否则这个子集群将不可用。

  这个缺陷使得系统可用性大大降低。因此Redis专门提供了一个哨兵机制来实现自动故障检测和转移。

什么是哨兵

  哨兵(Sentinel)是一种特殊的Redis实例,与Redis存储实例一样,哨兵同样是基于配置的。

  你可以通过以下两种方式启动哨兵:

    redis-sentinel /path/to/sentinel.conf
redis-server /path/to/sentinel.conf --sentinel

哨兵需要做什么

  • 监控节点状态
  • 当Master节点故障时,自动提升Replication(Slave)为Master
  • 发送故障通知
  • 配置传播(就是把更新后的集群配置传播给其他哨兵进行更新,保持一致性)

怎么实现

  • 节点监控

      如图(图中S为Sentinel,M为Master,R为Replication即Slave),Sentinel模型集群中的每个Sentinel都在监控着每个节点,每隔一段时间会向每个节点发送PING,通过返回的PONG信息确认节点正常。
![](https://img2018.cnblogs.com/blog/915947/201903/915947-20190324152023792-97329795.png "Sentinel模型")

  Sentinel与监控的节点之间实现了SUB/PUB(发布订阅)机制,每次Sentinel发布PING消息只需要在频道上发布并接收订阅者返回的消息。

  • 故障检测与Failover

      在这里有两个重要概念:主观下线(sdown)以及客观下线(odown)。因为Sentinel的数量>=2,并且每个Sentinel都在监控着每个节点,因此Sentinel与节点之间的连接都存在着主观性,这个主观性取决于Sentinel与节点之间的网络连通性。对于单个Sentinel而言,当其通过PING发现某个节点无反应时,其认为节点为下线状态,由于这个决定是这个Sentinel主观认为的,因此将此决断称为主观下线(sdown)。当Sentinel中认为某个节点主观下线的数量超过某个值时:

    • 1.投票选举Sentinel
    • 2.选出Slave,提升为Master,并将更新后的配置广播给其他Sentinel,Master将同步下属Slave数据

参考文献

  [1]redisLab.[EB/OL]. https://redis.io/topics/sentinel. 2019.01-2019.03.

Redis集群 - Sentinel与RAFT算法的更多相关文章

  1. redis集群sentinel哨兵模式的搭建与实际应用

    参考资料:https://blog.csdn.net/men_wen/article/details/72724406 之前环境使用的keepalived+redis vip集群模式,现在我们服务切换 ...

  2. redis 集群引出hash一致性算法

    写的很棒的文章 https://blog.csdn.net/bntX2jSQfEHy7/article/details/79549368 这篇分析的更叼 https://www.jianshu.com ...

  3. Redis集群进阶之路

    Redis集群规范 本文档基于Redis 3.X或更高版本,讲解Redis集群算法以及设计原理.此官方文档长期更新且随着Redis新版本特性的变化变动,详细请留意官网. 官网地址:https://re ...

  4. (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...

  5. 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

  6. 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

    作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...

  7. redis集群(Sentinel)

    问题 Redis 主哨兵模式是如何保证高可用的 主要依赖主哨兵的发现故障和故障转移 概述 本文假设读者对redis 的主从复制已经进行了了解 . Redis 主哨兵集群为Redis 提供了高可用,即高 ...

  8. redis集群管理--sentinel

    什么是sentinel? Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中. ...

  9. Redis集群~windows下搭建Sentinel环境及它对主从模式的实际意义

    回到目录 关于redis-sentinel出现的原因 Redis集群的主从模式有个最大的弊端,就是当主master挂了之前,它的slave从服务器无法提升为主,而在redis-sentinel出现之后 ...

随机推荐

  1. Elasticsearch学习笔记(十二)filter与query

    一.keyword 字段和keyword数据类型    1.测试准备数据 POST /forum/article/_bulk { "index": { "_id" ...

  2. tfs权限设置

    需求,管理员用户可以看到tfs里面的所有项目,现在需要给某个开发人员设置权限,只让其看到其中某一个项目. 一.tfs服务器设置 1.在服务器管理器中的[本地用户和组]中添加一个新用户,并在“组”将新用 ...

  3. es5原型式继承间解

    1. 原型式继承方法 js 继承使用不难,要说清楚,需要自己一定总结,才能说清楚. es5 的继承方式有很多种,这个是 js 语言本身造成,但是类实现继承之后的功能,有如下 3 条: 子类继承父类,主 ...

  4. instrument 之 core animation

    1.Color Blended Layers 图层混合 需要消耗一定的GPU资源,避免设置alpha小于1,省去不必要的运算 2.Color Hits Green and Misses Red 光栅化 ...

  5. 我所知道的JavaScript中判断数据类型

    相信一提到怎么判断js的数据类型,大家都会想到的是typeof.instanceof,那么为什么有了typeof的存在还要有instanceof? typeof? 根据MDN:typeof操作符返回一 ...

  6. golang 基本数据结构使用

    1 goalng struct 1.1 var s1 student 1.2 s2 := student {"zhou", 33} 1.3 s3 := student {Name: ...

  7. ECMAScript6 入门教程记录 变量的解构赋值

    (1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...

  8. HTTP笔记1

    传输层:提供进程地址 TCP:传输控制协议,面向连接的协议:通信前需要建立虚拟链路:结束后拆除链路.端口号:0-65535 UDP:用户报文协议,无连接的协议.端口号:0-65535 IANA(互联网 ...

  9. redis的 rdb 和 aof 持久化的区别

    aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...

  10. Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的解决办法

    在终端通过pip装好包以后,在pycharm中导入包时,依然会报错.新手不知道具体原因是什么,我把我的解决过程发出来. pip install 解决方案一: 在Pycharm中,依次打开File--- ...