在redis集群中,每个节点各司其职,有的当老大,有的当小弟,老大负责写,小弟负责读。但是如果老大挂了,这些小弟就群龙无首了,我们的服务就会崩盘,谁都不愿意这种事情发生,所以我们需要了解当master节点挂了之后redis的处置方式。

那么我们是怎么知道master挂了的呢?这里引出一个哨兵sentinel的概念,sentinel(通常为集群)基于心跳机制监测服务状态,会帮我们监测redis集群的健康状态每隔一秒向redis集群中的每个实例发送ping,如果某个实例在规定时间内未完成响应,则认为该实例主观下线

什么是主观下线?通俗点讲就是我单方面认为你挂了,但是你实际上挂没挂我不知道,只是我认为你挂了。

客观下线:与主观下线相对应,当超过指定数量(quorum,数量最好超过sentinel实例数量的一半)的sentinel都认为该实例主观下线了,则认为该实例客观下线

当确定了集群中某个master确实挂了,那么我们应该怎么处理呢?

我们应该从slave节点中选举出一个新的master节点,并且让原来的slave节点的老大都变成这个新的老大。那么应该选谁当这个新老大呢?这里我们有一套标准。

1.首先判断slave节点与master节点断开的时间长短,如果超过了指定值(可配置),则会排除该slave节点

2.每个slave节点都有一个slave-priority值,表示优先级,这个值越小优先级越高,如果是0则永不参与选举

3.如果slave-priority一样,则判断slave节点的offset值,越大则说明slave的数据越新,优先级越高

4.如果第三项都一样,那么其实选哪个slave都一样,因为他们的数据都是最新的,都可以成为主节点,那么这时候就根据他们的id判断,id越小优先级越高

ok,到此为止,新的master已经选举出来了,那么我们要让这个集群继续正常运行,还需要进行一些配置操作,也就是故障转移

1.首先sentinel要给新master节点(此时还是slave,只是他是准master)发送slave of no one命令,表示让该节点成为master

2.其次,另外的节点要和这个新master建立主从关系。sentinel向其他的slave发送slave of “新master的ip和端口”,让这些slave成为新master的从节点,开始从新的master上同步数据

3.最后,sentinel将故障节点标记为slave,当故障节点恢复后会自动成为新master的从节点

Redis-master节点宕机后的处理方式相关推荐

  1. 慌得一逼,Kafka宕机后不再高可用?吓死宝宝了

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 来源:juejin.im/post/6874957625998606344 推荐 ...

  2. Redis Cluster节点服务器宕机后导致集群重启失败案例

    这里说下自己碰到的一种情况: redis cluster集群由三个节点服务器组成,一个6个redis实例,每个节点开启2个端口,三主三从. reids部署目录是/data/redis-4.0.1,集群 ...

  3. 头条二面:宕机后,Redis如何实现快速恢复?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Kaito 来源 | kaito-kidd.c ...

  4. redis集群节点宕机 fail状态 redis的投票机制实测

    redis集群节点宕机 fail状态 redis的投票机制实测  redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的r ...

  5. php redis 挂掉,redis中的宕机什么意思

    宕机是计算机术语,口语里面我们简单的把停掉机器叫做down机,转换为汉字是"宕机",但很多人都叫做"当机"/"死机",虽然不规范但却流行. ...

  6. oracle rodm包,由重启引起的Oracle RAC节点宕机分析及追根溯源

    作者介绍 裴征峰,现就职于北京海天起点,二线专家成员,南京办事处负责人,OCP 10g.OCP 11g.OCM11g.超八年Oracle服务经验,擅长数据库故障诊断和性能调优.目前主要从事客户的现场维 ...

  7. MySQL集群节点宕机,数据库脑裂!如何排障?

    作者介绍 王晶,中国移动DBA,负责"移动云"业务系统的数据库集成架构设计.运维.优化等工作:擅长技术领域MySQL,获Oracle颁发的"MySQL DBA" ...

  8. kafka服务器死机消息,当kafka集群其中一台宕机后,会怎么样?

    一.介绍 我们搭建好kafka集群后,对其进行性能测试.遇到这种场景:我搭建好了三台kakfa集群,然后停掉其中一台kafka,然后集群是否能正常工作呢? kafka集群: 192.168.183.5 ...

  9. 模拟私网问题导致节点宕机无法启动

    模拟私网问题导致节点宕机无法启动 目的 分析过程 GI alert日志 os日志 ocssd.log 日志 参考文档 目的 本文章通过模拟私网问题,导致集群节点宕机,来进行日志分析. # ifconf ...

最新文章

  1. python之网络爬虫
  2. QWidget一生,从创建到销毁事件流
  3. android:使用Messenger进行进程间通信(一)
  4. python编程从入门到精通读书笔记(基础知识)
  5. Qt工作笔记-对QImage的进一步认识(关于α通道)
  6. mysql-bin日志文件清理
  7. 数据库类型少_DELETE与DROP 在数据库中的使用方法和区别
  8. oracle 分词函数,Oracle 中文分词
  9. 【PAT】1009. 说反话 (20)
  10. obendclean php命令,ob_end_clean
  11. 记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天
  12. iOS oc对网络图片进行黑白化处理
  13. 软件测试怎么学比较快
  14. Python 读取文件夹下的Excel文件导入到数据库
  15. Maven私库使用常见问题:本地安装三方Jar文件
  16. (2.0版本)企业微信可信域名,个人添加企业微信可信IP方法
  17. python selenium 验证码识别_Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考...
  18. 数据采集研究背景和意义?
  19. Android Glide 升级4.8 后, 原方法 animate() 无法使用
  20. element-ui -- 照片墙

热门文章

  1. SQL count详细用法
  2. Qt添加菜单栏和工具栏
  3. C Primer Plus第七章:控制
  4. sybase监控执行sql(转自新浪)
  5. greenplum(gp)的常用命令
  6. 小程序之定位签到打卡=>腾讯地图SDK
  7. appium---第一个脚本--启动一个已存在的app
  8. cf体验服老显示与服务器出现异常,穿越火线体验服出现网络异常
  9. Holder不等式 Minkowski不等式
  10. 【内网穿透】通过WebDAV服务访问群晖NAS文件