哨兵是Redis的高可用解决方案:由多个哨兵组成的系统监视主从服务器,可以将下线的主服务器属下的某个从服

务器升级为新的主服务器,继续保障运行。

启动并初始化Sentinel

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

Sentinel本质是一个Redis服务器,但是它不会载入RDB or AOF文件。

选举领头Sentinel

当主服务器被判断为客观下线时,监视这个主服务器的哨兵会进行协商,选举一个领头哨兵,由领头哨兵,对下线

的主服务器执行故障转移操作。

  1. 所有监控这个 主 的在线哨兵都有资格成为领头哨兵。

  2. 每次进行领头哨兵选举之后,不论选举是否成功,所有哨兵的配置纪元的值会自增一次。配置纪元实际上是一

    个计数器,毫无特别。

  3. 在一个配置纪元里,所有哨兵都有一次将某个哨兵设置为局部领头哨兵的机会,并且局部领头一旦设置,在这个配置纪元里不能再更改。

  4. 每个哨兵都会要求其他哨兵将自己设置为局部领头。

  5. 哨兵设置局部领头的规则是先到先得。

  6. 如果有某个哨兵被半数以上的哨兵设置成了局部领头,这个哨兵成为领头哨兵。

  7. 在给定时限内,直到选出领头哨兵为止。

故障转移

选举产生领头哨兵后,领头执行故障转移操作:

  1. 在下线主的从服务器里,挑选一个成为主服务器。

  2. 让其他从服务器改为复制新的主服务器。

  3. 下线的主服务器成为从服务器。

选出新的主服务器

新主服务器是怎样炼成的

领头哨兵会按照规则进行过滤:

  1. 删除断线的从服务器。

  2. 删除最近五秒没有回复领头的从服务器。

  3. 保留数据比较新的从服务器。

  4. 最后就选择offset最大,运行ID最小的从服务器。

Reference

《Redis设计与实现》

Redis高可用解决方案:哨兵(Sentinel)的更多相关文章

  1. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  2. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  3. Redis 高可用之哨兵模式

    参考   : https://mp.weixin.qq.com/s/Z-PyNgiqYrm0ZYg0r6MVeQ 一.redis高可用解决方案 redis主从 优点:1.高可靠性,主从实时备份,有效解 ...

  4. 老司机带你玩转面试(4):Redis 高可用之哨兵模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  5. Redis高可用方案-哨兵与集群

    Redis高可用方案 一.名词解释   二.主从复制 Redis主从复制模式可以将主节点的数据同步给从节点,从而保障当主节点不可达的情况下,从节点可以作为 后备顶上来,并且可以保障数据尽量不丢失(主从 ...

  6. Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解

    Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的. Redis-Sentinel机制主要用三 ...

  7. Redis学习三:Redis高可用之哨兵模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...

  8. redis高可用(哨兵机制)

    redis哨兵机制:redis的哨兵系统用于管理多个reids服务器,该系统主要有三个作用: 监控:哨兵 会不断地检查你的主服务(Master)和从服务器(Slave)是否运作正常. 提醒:当被监控的 ...

  9. Redis高可用-主从,哨兵,集群

    主从复制 Master-Slave主从概念 同时运行多个redis服务端,其中一个作为主(master),其他的一个或多个作为从(slave),主从之间通过网络进行通讯,slave通过复制master ...

随机推荐

  1. 从元素抽取属性,文本和HTML

    问题 在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据. 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的 ...

  2. 深入浅出Mybatis系列(六)---配置详解之typeAliases别名

    本篇继续讲剩下的配置节点之一:typeAliases. typeAliases节点主要用来设置别名,其实这是挺好用的一个功能, 通过配置别名,我们不用再指定完整的包名,并且还能取别名. 例如: 我们在 ...

  3. 在vue中引入版本为"echarts": "^5.1.2"图表

    1. npm install echarts --save 2. 在main.js文件中 import echarts from 'echarts' Vue.prototype.$echarts =  ...

  4. 工具库用久了,你还会原生操作 Cookie 吗?

    用得好了,工具库和框架确实是一大助力,但就怕我们会因此习惯了走捷径,而忘了自己的根本依靠是什么. 前言 前端技术的飞速发展,给从业人员不可避免地带来了"疲劳"感,我们常常会感叹学不 ...

  5. 微信小程序切换选中状态

     实现的主要思路是根据每一项的index值,动态改变idx值,当index==idx值的时候,添加点击选中样式的类名. wxml: <scroll-view scroll-x="tru ...

  6. SpringBoot笔记(6)

    一.数据访问(SQL) 1.数据源的自动配置-HikariDataSource 1.导入JDBC场景 <dependency> <groupId>org.springframe ...

  7. linux grep命令使用详解

    grep是我们最常用的命令之一,但是正真用的熟的不多,把基础命令记牢固,能帮我们节约很多时间 grep的option -A 1 表示找到所有匹配行,并显示所有匹配行后的一行 在错误日志查找时还是很有用 ...

  8. mybatis和hibernate区别

    一.本质区别和应用场景

  9. 判断IE浏览器版本

    //判断IE浏览器版本 function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isI ...

  10. python库--pandas--部分实例

    >>> pd.pivot( index=np.array(['one', 'one', 'one', 'two', 'two', 'two']), columns=np.array( ...