Redis系列(七)--Sentinel哨兵模式
在上一篇文章了解了主从复制,主从复制本身的容错性很差,一旦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节点失败的"共识"
转载于:https://www.cnblogs.com/huigelaile/p/10900008.html
Redis系列(七)--Sentinel哨兵模式相关推荐
- Redis(十八)——Sentinel 哨兵模式
文章目录 Redis(十八)--Sentinel 哨兵模式 1.哨兵模式概述 2.搭建 Sentinel 集群 3.sentinel 集群测试 4.哨兵模式的所有配置详解 Redis(十八)--Sen ...
- redis主从配置+sentinel哨兵模式
redis版本:redis-2.8.19.tar.gz 架构:2个节点 节点1: 10.10.10.10 节点2: 10.10.10.20 节点1部署redis实例,角色master,部署sentin ...
- Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式
Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式 主从复制 将主节点的数据改变同步给从节点 作用 备份数据 读写分离 存在的问题: 手动干预切主等操作 主节点的写能力受到单机限制 ...
- 深入剖析Redis系列(七) - Redis数据结构之列表
前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...
- Redis集群之哨兵模式
本文来说下Redis集群之哨兵模式 文章目录 概述 哨兵模式 什么是哨兵 实现原理 哨兵选举过程 master选举过程 cluster集群模式 cluster集群模式是怎么存放数据的 键是如何和163 ...
- 为什么至少三个哨兵_入职第一周,组长让我把部门redis服务搞成哨兵模式...慌-龙跃十二...
少点代码,多点头发 本文已经被GitHub收录,欢迎大家踊跃star 和 issues. 入职第一周,我被坑了 最近刚入职新公司,本来想着这刚来新公司,一般都是熟悉熟悉公司同事,看看组内工程文档,找几 ...
- Redis(主从复制、哨兵模式、集群)概述及部署
Redis(主从复制.哨兵模式.集群)概述及部署 前言 一.主从复制 (1)主从复制原理 (2)主从复制作用 (3)主从复制流程 (4)搭建主从复制 ①修改master节点配置文件 ②修改Slave节 ...
- Redis高可用之哨兵模式
我们前面学习了Redis的主从模式,可以实现读写分离和数据备份,减轻Redis中master节点的压力.但是主从模式仅仅是减轻了master节点的读压力和做数据备份,一旦master节点挂了之后,我们 ...
- sentinel哨兵模式详细介绍
sentinel哨兵模式介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本 ...
最新文章
- 几个不错的开源的.net界面控件
- java 文本编辑器替换特殊字符_linux中批量替换文本中字符串--转载
- XTU 1243 2016
- Android sqlite数据库操作通用框架AHibernate(二)源码-用于交流
- 男人如何在不经常锻炼的情况下,慢慢消除大肚皮,恢复好身材?
- android服务器接口测试,使用Retrofit和Mockito进行可靠的Android API测试
- 计算机最新一区sci,人工智能容易发的SCI期刊_2019中科院jcr期刊分区_2019中科院最新分区...
- 基于springboot vue h5 手机商城源码
- Python数据结构与算法(17)---归并排序
- 追寻缺失的大学精神 一个民族需要关注天空的人
- Android4: Write Storage权限问题
- C语言 常量和宏定义
- 一加手机可以刷鸿蒙系统吗,朋友想把1+手机安装鸿蒙系统,老板收费350,大家千万别被骗了!...
- 判断N维矩阵是否是Monge矩阵的Java实现
- 32位eclipse使用64位jdk问题
- CSGO手套武器箱直接卖还是开了再卖?
- 无符号数与带符号数的相加减
- 微信小程序代驾系统源码(含未编译前端,二开无忧) v2.5
- 浅谈对信息管理的认识
- matlab统计文本数据画直方图,matlab从txt中读取某列数据画直方图