引入

  在主从模型中讲到

一旦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. php中的echo 与print 、var_dump 的区别

    ·  echo - 可以输出一个或多个字符串 ·  print - 只允许输出一个字符串,返回值总为 1 提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1. ...

  2. php java aes

    class CryptAES{ protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protecte ...

  3. 学习记录----简单的原生js路由

    在以前的web程序中,路由字眼只出现在后台中.但是随着SPA单页面程序的发展,便出现了前端路由一说.单页面顾名思义就是一个网站只有一个html页面,但是点击不同的导航显示不同的内容,对应的url也会发 ...

  4. 2019春第六周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 在这里 我在这个课程的目标是 能够熟练掌握指针的用法 这个作业在那个具体方面帮助我实现目标 对指针的使用更加得心应手 参考文献与网址 C语 ...

  5. service order

    1: SRVO Service Order         compress: 本地部署,客户能够看到后台代码,transaction type,改代码等.   SVO1 Service Order  ...

  6. 3#Java案例

    以下内容引用Github地址https://github.com/DuGuQiuBai/Java/blob/master/day01/code/02_%E5%B8%A6%E6%B3%A8%E9%87% ...

  7. python迭代器的原理及应用

    ''''什么是迭代器?迭代的工具1.什么是迭代? 迭代是一个重复的过程,每一次重复都是基于上一次结果而进行的while True: print('hello world')像上面做这种单纯的重复并不是 ...

  8. 【函数参数】什么是*args和**kwargs?

    **args表示任何多个无名参数,它是一个tuple,Python将**args从开始到结束作为一个tuple传入函数 **kwargs表示关键字参数,它是一个dict,Python将**kwargs ...

  9. Javascript学习-简单测试环境

    Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...

  10. jQuery之Deferred对象P2

    转自 https://www.cnblogs.com/losesea/p/4415676.html deferred对象是jQuery对Promises接口的实现.它是非同步操作的通用接口,可以被看作 ...