Redis从入门到高可用分布式实践8高可用Sentinel
第8章 Redis Sentinel
本章将一步步解析Redis Sentinel的相关概念、安装部署、配置、客户端路由、原理解析,最后分析了Redis Sentinel运维中的一些问题。
8-1 sentinel-目录
主从复制高可用
架构说明
安装配置
客户端连接
实现原理
常见开发运维问题
8-2 主从复制高可用?
8-3 redis sentinel架构
8-4 redis sentinel安装与配置
8-5 redis sentinel安装演示-1
8-6 redis sentinel安装演示-2
8-7 java客户端
8-8 python客户端
8-9 实现原理-1-故障转移演练
8-10 实现原理-2.故障转移演练(客户端)
8-11 实现原理-3.故障演练(日志分析)
8-12 三个定时任务
8-13 主观下线和客观下线
8-14 领导者选举
8-15 故障转移
8-16 常见开发运维问题-目录
8-17 节点运维
8-18 高可用读写分离
8-19 本章总结
8-1 sentinel-目录
主从复制高可用
架构说明
安装配置
客户端连接
实现原理
常见开发运维问题
8-2 主从复制高可用?
为主提供一个备份
为主提供一个分流,减轻主的压力
故障转移需要手工或者写脚本来完成
主从复制问题
手动故障转移
写能力和存储能力受限
主从复制-master宕掉
选择一个从节点成为在主节点
有很多个点很复杂:
8-3 redis sentinel架构
不是从redis直接获取信息,而是从redis sentinel中获取。对于客户端来说,我不关心谁是master。
手动过程 变成了sentinal自动发现
还可以监控多套master-slave
8-4 redis sentinel安装与配置
也要给出rdb的文件名
监控的主节点的名字是什么、IP是什么、几个SENTINEL认为他有问题了就可以进行故障转移
ping多少秒不通就认为它有问题
复制是并发的还是串行的
故障转移时间
8-5 redis sentinel安装演示-1
主节点的配置
快速生成从节点的配置
看主从复制的关系
8-6 redis sentinel安装演示-2
sentinal节点的配置
并没有配置从节点,那么它是如何获取到的呢?解析info信息
发现它的配置已经发生了改变,配置重写发生的改变,发现了两个从节点,把一些默认的配置给去掉了
它会自动发现我们的slave
26381没有启动,发现这里都没有它的日志
sed的时候没有改动
三个sentinal能互相感知到
8-7 java客户端
8-8 python客户端
8-9 实现原理-1-故障转移演练
8-10 实现原理-2.故障转移演练(客户端)
对master节点进行强制宕机
方便我看故障转移的效果
故障转移需要时间
发现故障已经恢复了!
但是如果你连接的是一个主从结构,你自己需要做很多手工工作,而这里使用sentinal很容易就进行了故障转移。
8-11 实现原理-3.故障演练(日志分析)
与master已经失联
7001被选成了新的master
7002也与master失联了,但是它接收到一条命令,让它去复制7001就好了
关于sentinal的表现
26379的日志
只有一个sentnal去做这个故障转移剩下的只需要投票
8-12 三个定时任务
master节点上有发布订阅的频道,用于让sentinal节点进行信息交换,一个sentinal发布信息,剩下的sentinal节点都能收到,以便达成共识。
8-13 主观下线和客观下线
超过30s没有收到回复,就会主观判断它坏了
8-14 领导者选举
使用的是一个算法
8-15 故障转移
最早的一个jiedian
8-16 常见开发运维问题-目录
节点运维
高可用读写分离
8-17 节点运维
手动的故障转移,忽略了客观下线主观下线、故障转移、领导者选举
8-18 高可用读写分离
如果主节点挂掉了,完成故障转移,Jedis是怎么实现的呢?
拿到master后,订阅消息
主从节点发生了切换,我就会重新完成连接池的初始化