什么是Redis集群

Redis集群是一个提供在多个Redis节点之间共享数据的程序集。它并不像Redis主从复制模式那样只提供一个master节点提供写服务,而是会提供多个master节点提供写服务,每个master节点中存储的数据都不一样,这些数据通过数据分片的方式被自动分割到不同的master节点上。

为了保证集群的高可用,每个master节点下面还需要添加至少1个slave节点,这样当某个master节点发生故障后,可以从它的slave节点中选举一个作为新的master节点继续提供服务。不过当某个master节点和它下面所有的slave节点都发生故障时,整个集群就不可用了。

Redis sentinel工作原理

在哨兵模式架构中,client端在首次访问Redis服务时,实际上访问的是哨兵(sentinel),sentinel会将自己监控的Redis实例的master节点信息返回给client端,client后续就会直接访问Redis的master节点,并不是每次都从哨兵处获取master节点的信息。

sentinel会实时监控所有的Redis实例是否可用,当监控到Redis的master节点发生故障后,会从剩余的slave节点中选举出一个作为新的master节点提供服务,并将新master节点的地址通知给client端,其他的slave节点会通过slaveof命令重新挂载到新的master节点下。当原来的master节点恢复后,也会作为slave节点挂在新的master节点下。

Redis sentinel是如何进行监控的

要实现Redis节点的监控,sentinel首先要得到所有的Redis节点的信息。sentinel通过在配置文件中配置 sentinel monitor 选项来指定要监控的redis master节点的地址,然后在启动sentinel时,会创建与redis master节点的连接并向master节点发送一个info命令,master节点在收到info命令后,会将自身节点的信息和自己下面所有的slave节点的信息返回给sentinel,sentinel收到反馈后,会与新的slave节点创建连接,接下来就会每隔10秒钟向所有的redis节点发送info命令来获取最新的redis主从结构信息。

有了redis实例的主从信息后,sentinel就会以每秒钟一次的频率向所有redis实例发送一个PING命令,而且如果sentinel是集群部署的话,每个sentinel还会以同样的频率向其他sentinel实例发送PING命令。当redis实例和sentinel实例收到PING命令后,会向sentinel返回一个有效的回复:+PONG 、-LOADING 或者 -MASTERDOWN,若返回其他的回复,或者在指定时间内(sentinel down-after-milliseconds 选项配置)没有回复,那么sentinel认为实例的回复无效。如果实例在 sentinel down-after-milliseconds 时间内未返回过一次有效的回复,那该实例就会被sentinel标记为主观下线(Subjectively Down,简称 SDOWN,指的是单个 sentinel 实例对服务节点做出的下线判断)。

当redis master节点被足够数量(sentinel monitor 选项配置,其中的quorum即为指定的sentinel数量,下面会详细介绍相关参数)的sentinel标记为主观下线后,那么master节点就会被标记为客观下线(Objectively Down,简称 ODOWN,指的是多个 sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。【一个 sentinel 可以通过向另一个 sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线】)。客观下线条件只适用于主服务器: 对于任何其他类型的 Redis 实例,sentinel 在将它们判断为下线前不需要进行协商, 所以slave服务器或者其他 sentinel 永远不会达到客观下线条件。

当redis master被标记为客观下线时,每个sentinel向其他slave节点发送info命令的频率由之前的10秒钟一次变为1秒钟一次。并且会通过raft算法在sentinel中选出一个leader,由leader节点完成redis的故障转移工作。

Redis sentinel选举redis-master的规则

redit高可用之集群相关推荐

  1. 搭建高可用mongodb集群(二)—— 副本集

    2019独角兽企业重金招聘Python工程师标准>>> 在上一篇文章<搭建高可用MongoDB集群(一)--配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能 ...

  2. 构建高可用ZooKeeper集群(转载)

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  3. corosync+pacemaker实现高可用(HA)集群(二)

    部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...

  4. Redis高可用之集群配置(六)

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

  5. 如何构建高可用ZooKeeper集群

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  6. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    大家一定非常熟悉如何利用Docker启动单个Redis容器用于开发环境,本文将介绍如何利用Docker Compose模板在本机和云端部署基于Sentinel的高可用Redis 3集群. Redis集 ...

  7. zookeeper安装包_构建高可用ZooKeeper集群

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  8. 构建高可用ZooKeeper集群

    构建高可用ZooKeeper集群 2017/01/23 | 分类: 技术架构 | 0 条评论 | 标签: ZOOKEEPER 分享到:9 原文出处: cyfonly ZooKeeper 是 Apach ...

  9. 高可用 kubernetes 集群部署实践

    前言 Kubernetes(k8s) 凭借着其优良的架构,灵活的扩展能力,丰富的应用编排模型,成为了容器编排领域的事实标准.越来越多的企业拥抱这一趋势,选择 k8s 作为容器化应用的基础设施,逐渐将自 ...

最新文章

  1. 关于机器学习你必须了解的十个真相
  2. 100条Vista命令行技巧Tips,您知道几条?
  3. 机器学习(4.文本数据的特征抽取(第二种TfidfVectorizer(TF-IDF)))
  4. php consul 服务注册,CentOS 安装 Consul 服务注册和发现软件
  5. .NET Core整合log4net以及全局异常捕获实现2
  6. Markdown YYDS,但是编辑器依旧可以更好 | CSDN编辑器测评
  7. Linux之SELinux自主访问控制系统
  8. 程序员如何做好应聘?简历、面试和Offer
  9. 计算机网络传输速率单位MB,计算机网络中,传输速率MB/s和Gb/s如何换算?
  10. AJAX学习(一)AJAX基础
  11. (转)loff_t *ppos是什么东东
  12. 田野调查手记·浮山摩崖石刻(九)
  13. 微信小程序收款手续费_【微信支付】微信小程序支付开发者文档
  14. 企业如何构建数字化平台战略,加速规模化创新
  15. IIS之web服务器的安装、部署以及使用教程(图文详细版)
  16. C语言如何实现任意数相乘
  17. 。系统美化 ① FAQ
  18. 保研文书——导师推荐信模板
  19. 对页游《小兵大战》服务器DM内存溢出的排错过程总结
  20. 服务器网卡多网卡绑定及vlan支持

热门文章

  1. 如何查询快递单号物流
  2. 只需四步,让你成为朋友圈的焦点----Python制作微信好友头像墙
  3. 华为内部访谈:凡是溜须拍马的员工,一律拿掉
  4. Android studio 导入项目详解 (简单快速)
  5. 外行朋友值得一读的5本经典数学书
  6. 魅族18Max什么时候发布?
  7. 白杨SEO:从百度一下到抖音搜索关键词进行查找信息,挖掘用户需求的新机会你知道吗?
  8. addon游戏_SnowMobile Addon
  9. CDR插件开发之Addon插件008 - 在VS中下载安装Addons插件模板并基于模板创建Addon插件工程
  10. Eclipse背景颜色设置