引入

  在主从模型中讲到

一旦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. Port Channel and VPC

    1.Port Channel 介绍 Port Channel  简介 绑定多个物理链路(最多8条),到一个单一的逻辑链路,在两个物理设备之间 每个物理端口只能被放入一个port-channel中. 在 ...

  2. vue中 this.$set的用法

    当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. <template> <div id=& ...

  3. spring-data-radis错误

    org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested ...

  4. POJ 1655 求树的重心

    POJ 1655 [题目链接]POJ 1655 [题目类型]求树的重心 &题意: 定义平衡数为去掉一个点其最大子树的结点个数,求给定树的最小平衡数和对应要删的点.其实就是求树的重心,找到一个点 ...

  5. MQ消息队列配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. PAT (Basic Level) Practice (中文)1023 组个最小数

    1023 组个最小数 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8 ...

  7. AD域详解

    很详细,赞!

  8. Sed工作原理

    Sed工作原理   sed是一个非交互式的流编辑器.所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出:而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然 ...

  9. 2018.2.21 Python 初学习

    折腾了一天,一直在用CMD学习Python写Hello World.偶然间发现可以用Pycharm.也算是给后面想学习的人提个醒,方便省事许多. format()使用方法. age = 20name ...

  10. WebForm文件上传

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...