07.初步学习redis哨兵机制
- [ ]
一、哨兵(sentinal)的介绍
哨兵是redis集群架构中非常重要的一个组件,主要功能如下:
- 集群监控,负责监控redis master和slave进程是否正常工作
- 消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
- 故障转移,如果master node挂掉了,会自动转移到slave node上
- 配置中心,如果故障转移发生了,通知client客户端新的master地址
哨兵本身也是分布式的,作为一个哨兵集群去运行,互相协同工作
故障转移时,判断一个master node宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题
即使部分哨兵节点挂掉了,哨兵集群还是能正常工作的
二、主观和客观宕机
sdown:主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机
odown:客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机
达成条件
sdown:,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就主观认为master宕机
odown:如果一个哨兵在指定时间内,收到了quorum指定数量的其他哨兵也认为那个master是sdown了,那么就认为是odown了,客观认为master宕机
三、哨兵集群的自动发现机制
哨兵互相之间的发现,是通过redis的pub/sub系统实现的。
- 每隔两秒钟,每个哨兵都会往自己监控的某个master+slaves对应的__sentinel__:hello channel里发送一个消息,内容是自己的host、ip和runid还有对这个master的监控配置
- 每个哨兵也会去监听自己监控的每个master+slaves对应的__sentinel__:hello channel,然后去感知到同样在监听这个master+slaves的其他哨兵的存在
- 每个哨兵还会跟其他哨兵交换对master的监控配置,互相进行监控配置的同步
四、slave配置的自动纠正
哨兵会负责自动纠正slave的一些配置,比如slave如果要成为潜在的master候选人,哨兵会确保slave在复制现有master的数据; 如果slave连接到了一个错误的master上,比如故障转移之后,那么哨兵会确保它们连接到正确的master上
hi~我是Mirror,一个为了自由安逸的未来而不断前进的的程序员。
如果你觉得文章对你有一点点帮助,一个小小赞,便是对我的认可,如果有不足之处,也欢迎各位指正。
07.初步学习redis哨兵机制的更多相关文章
- 关于Redis哨兵机制,7张图详解!
写在前面 之前有位朋友去面试被问到Redis哨兵机制,这道题其实很多小伙伴都应该有被问到过!本文将跟大家一起来探讨如何回答这个问题!同时用XMind画了一张导图记录Redis的学习笔记和一些面试解析( ...
- redis 哨兵机制环境搭建
Redis哨兵机制,一主二从 注:Redis哨兵切换,建议一主多从 一.一主二从 教程步骤:https://www.cnblogs.com/zwcry/p/9046207.html 二.哨兵配置(se ...
- Redis哨兵机制的实现及与SpringBoot的整合
1. 概述 前面我们聊过Redis的读写分离机制,这个机制有个致命的弱点,就是主节点(Master)是个单点,如果主节点宕掉,整个Redis的写操作就无法进行服务了. 为了解决这个问题,就需要依靠&q ...
- redis哨兵机制讲解
原文链接:https://blog.csdn.net/yswKnight/article/details/78158540 一.什么是哨兵机制? 答:Redis的哨兵(sentinel) 系统用于管理 ...
- Redis哨兵机制原理
1.概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案.可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip p ...
- redis哨兵机制--配置文件sentinel.conf详解
转载自 https://blog.csdn.net/u012441222/article/details/80751390 Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis ...
- Redis 哨兵机制
概述 由一个或多个 Sentinel(哨兵)实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的 ...
- Redis 哨兵机制以及灾难演练
#### 哨兵都采用这个配置即可 ##### 1.修改sentinel.conf配置文件 
1.简介: 1.是什么: Redis-Sentinel是Redis官方推荐的高可用(HA)方案,当用Reids 做master-slave高可用方案时,假如master宕机了,redis本身(包括它的 ...
随机推荐
- Docker学习日记-安装Docker
Docker是什么: 简单理解就是基于go语言开发的开源的应用容器引擎. 对进程进行封装隔离,属于操作系统层面的虚拟化技术. Docker的优势: 1.更高效的利用系统资源 2.更快速的启动时间 3. ...
- 精讲RestTemplate第2篇-多种底层HTTP客户端类库的切换
本文是精讲RestTemplate第2篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 RestTemplate只是对其他的HTTP客 ...
- 云小课 | IPv4枯了,IPv6来了
摘要:本篇主要分享IPv4与IPv6的区别和IPv6的应用场景,助您快速理解华为云IPv6双栈及IPv6 EIP. IPv6的由来 上节课我们讲了公网IP与私网IP,了解了IP地址的一些知识. 我们一 ...
- 虹软人脸识别—版本升级接口修改说明(C#)
自虹软发布了免费.离线版本人脸识别SDK,在Github上陆续分享了各个版本对应的 C# Demo.因为公司项目一直在使用虹软的SDK,因此每当虹软官网有新版本发布,我都会进行了解,并结合Demo进行 ...
- Redis服务之集群节点管理
上一篇博客主要聊了下redis cluster的部署配置,以及使用redis.trib.rb工具所需ruby环境的搭建.使用redis.trib.rb工具创建.查看集群相关信息等,回顾请参考https ...
- Eclipse变得很卡
半个月前,发现Eclipse很卡很卡,尤其在按住Ctrl选择方法的实现类的时候,电脑的反应速度让开发者无法忍受. Eclipse还经常未响应状态. 开始以为Eclipse的运行内存设置小了,把ecli ...
- java 基本类型包装类
一 基本类型包装类 1.包装类概述 Java中提供了相应的对象来解决实现字符串与基本数据之间转换问题,基本数据类 型对象包装类:java将基本数据类型值封装成了对象. 8种基本类型对应的包装类如下: ...
- PowerJob 的自实现高可用方案,妙妙妙!
本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列. 碎碎念 高可用放到今天已经不是一个新颖的词汇了,怎 ...
- 搭建Elasticsearch Logstash Kibana 日志系统
分布式系统下由于日志文件分布在不同的系统上,分析比较麻烦,通过搭建elk日志系统,可快速排查日志信息. Elasticsearch是大数据处理框架,使用的分布式存储,可存储海量数据:基于Lucense ...
- vue或者js中平均分割数组
vue中 把一段长数组按照指定份数 均分 sliceArray(array, size) { var result = []; for (var x = 0; x < Math.ceil(arr ...