在上一篇文章了解了主从复制,主从复制本身的容错性很差,一旦master挂掉,只能进行手动故障转移,很难完美的解决这个问题

而本文讲解的sentinel可以解决这个问题

Redis sentinel示意图:

安装与配置

1、配置开启主从节点

2、配置开启sentinel监控主节点(sentinel是特殊的Redis)

1.1、配置master、slave

master节点:port 6379

port 6379
daemonize yes //以守护进程的方式启动
pidfile "/var/run/redis_6379.pid"
logfile "6379.log"
dir "/var/local/redis/data"

两个slave节点:port 6380 6381

port 6380
daemonize yes //以守护进程的方式启动
pidfile "/var/run/redis_6380.pid"
logfile "6380.log"
dir "/var/local/redis/data"
slaveof 127.0.0.1 6379
port 6381
daemonize yes //以守护进程的方式启动
pidfile "/var/run/redis_6381.pid"
logfile "6381.log"
dir "/var/local/redis/data"
slaveof 127.0.0.1 6379

启动这三个Redis实例,查看6379的信息

redis-cli -a huluhulu -p 6379 info replication
role:master
connected_slaves:2

可以看到本身是master,连接了两个slave

1.2、配置sentinel

port 26379
dir /usr/local/redis/data/
logfile 26379.log
sentinel monitor mymaster 127.0.0.1 6379 2 //master名称为mymaster,2是指有两个sentinel认为master发生故障,就会发生故障转移
sentinel down-after-milliseconds mymaster 30000 //30s无法ping通master,就认为故障了
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

通过命令redis-sentinel sentinel-{port}.conf启动三个sentinel实例

通过info命令查看sentinel信息

sentinel可以监控多套master-slave

1.3、sentinel故障转移过程

  1、多个sentinel发现并确认master出现故障

  2、选择一个sentinel作为领导

  3、选取一个slave作为master

  4、通知其它slave作为master的slave

  5、通知客户端主从变化

  6、等待老的master复活作为新的master的slave

第二步领导者选取:

原因:

  只需要一个sentinel完成故障转移

过程:

  通过命令询问别的sentinel节点选举自己成为领导者,只要没有投过票就会同意,只要超过quorum就可以成为领导者,如果有多个领导者,等

待一段时间重新选取

第三步重新选择master的条件,依次判断,直到满足为止:

  1)、通过slave-priority(如果机器配置不同,可以把高配机器priority设置更高)选择优先级高的

  2)、选择offset最大的节点,和master的offset最接近,数据更加完整

  3)、选择run_id最小的slave节点

对这个slave执行slaveof no one使其成为master

第六步对挂掉的master节点标记为slave,对其保持关注,一旦复活,也要成为新master的slave节点

1.4、sentinel三个定时任务

sentinel通过三个定时任务对master进行异常判断和故障转移

  1、每10s每个sentinel对master和slave执行info,以此来发现slave节点和确定主从关系

  2、每2s每个sentinel通过master节点的channel和其它sentinel交换信息(pub/sub 发布订阅)

  3、每1s每个sentinel对其它sentinel和redis执行ping

sentinel monitor <masterName> IP Port <quorum> quorum指法定人数,sentinel主观下线的人数达到法定人数就可以进行客观下线

主观下线:每个sentinel对Redis节点失败的"偏见"

客观下线:所有sentinel对Redis节点失败的"共识"

Redis系列(七)--Sentinel哨兵模式的更多相关文章

  1. redis集群sentinel哨兵模式的搭建与实际应用

    参考资料:https://blog.csdn.net/men_wen/article/details/72724406 之前环境使用的keepalived+redis vip集群模式,现在我们服务切换 ...

  2. Redis笔记-Sentinel哨兵模式

    Redis以主从的模式搭建集群后,如果主节点Master挂掉,虽然可以实现将备用节点Slave切换成主节点,但是Redis本身并没有自动监控机制,需要借助Sentinel哨兵模式,实现监控并实现自动切 ...

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

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

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

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

  5. Redis 5 配置 Redis sentinel(哨兵模式)

    先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: * 监控(Monitoring): Sentin ...

  6. Redis实战——redis主从备份和哨兵模式实践

    借鉴:http://redis.majunwei.com/topics/sentinel.html     https://blog.csdn.net/u011784767/article/detai ...

  7. Redis系列七 主从复制(Master/Slave)

    主从复制(Master/Slave) 1.是什么 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 2 ...

  8. Redis 高可用之哨兵模式

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

  9. redis主从配置+sentinel哨兵

    redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...

随机推荐

  1. 制作NGUI动态字体

    在ngui中有两种制做字体的方式.一种是bmfont等工具制作字体图集的方法,这样的方法呢是动态的.生成的图集有多个字就是多少个字,要多加一 个字要又一次用工具做一次,非常是麻烦. 而汉字有太多,我们 ...

  2. 将JSON对象转换成IList,好用linq

    JObject JToken JProperty IList<> 搞得头都大了,记而备忘: JObject json = ..... JToken[] jps = json["r ...

  3. build.gradle解析

    1 providedCompile.testImplementation.implementation.api.runtime.testCompile.classpath.natives 这些都是和p ...

  4. gitlab的安装和配置

    1 使用omnibus gitlab来安装gitlab 也就是说,将gitlab和它所需要的组件打一个包,即打一个bundle进行安装. 第一步,安装gitlab的源. curl https://pa ...

  5. npm安装以及命令行

    安装visual studio的时候,安装Node.js会同时安装npm 查看版本 PS C:\Users\clu\Desktop> npm --version5.6.0 PS C:\Users ...

  6. 昆石VOS2009 VOS3000无漏洞去后门电脑管理客户端大全

    注意:您的VOS是什么版本的请使用什么版本的管理客户端,否则无法登陆! ** VOS2009的: ** VOS2009-client-v2.1.2.0.exe 点击这里下载: VOS2009-clie ...

  7. SpringBoot中使用spring-data-jpa 数据库操作(上)

    Java客户端使用Spring-Data-Jpa这个组件. Spring-Data-Jpa就是Spring对Hibernate的一个整合. 选择create在运行的时候它会自动帮我们创建一个表. sp ...

  8. foxmail地址簿导入thunderbird的乱码问题 (转载)

    转自:http://blog.csdn.net/gexueyuan/article/details/9032595 由于foxmail的地址簿格式和thunderbird的格式不一样,另外也存在编码问 ...

  9. php编译安装参数详解

    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/loc ...

  10. [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(1)App Store 图标、App 预览和屏幕快照概述

    您可以为您的 App Store 产品页提供有关您 App 的 App Store 图标.三个 App 预览和十张屏幕快照. App Store 图标 您必须提供一个 App Store 图标,用于在 ...