IT老齐架构300讲笔记(018) Redis Sentinel高可用架构

目录

Redis主从复制

一主多从架构

​redis主从同步原理

​redis主从架构缺点

Redis Sentinel高可用集群

集群介绍

如果Redis master挂了怎么办?

先判断是否真挂了

​ 开启故障转移

选出新的master后开始故障转移

如果Sentinel挂了怎么办?如何保证Sentinel高可用

专栏链接:IT老齐架构300讲笔记专栏


Redis主从复制

一主多从架构

master主要负责写入slave负责读取,有读写分离的功能


redis主从同步原理

1、slave执行命令向master建立连接
2、master执行bgsave(后台存储),生成rdb快照(redis备份方式,data以二进制方式保存在本地),发送到slave上
3、slave获取快照后读取,对data还原,保证初始化数据一致
4、master接受命令发送到salve,salve执行保证后续数据一致



redis主从架构缺点

master挂掉,redis集群瘫痪

Redis Sentinel高可用集群

集群介绍

1、建立sentinel集群有一个leader角色
2、一般需要6个节点,3个sentinel,3个Redis主从
3、sentinel安装在节点上,根据配置信息监听redis的健康状态
(每个sentinel 1次/秒频率向master,salve及其他sentinel实例发送ping命令

如果Redis master挂了怎么办?

先判断是否真挂了

主动下线(不靠谱,存在网络问题误判):实例最后一次有效回复时间超时own-after-milliseconds
客观下线多个sentinel ping不通(多个=总数除以2+1)

开启故障转移



sentiel从slave选出新的master,salve哪个选为新的主服务器条件:

1.剔除主观下线、已断线、或者最后一次回复PING命令的时间大于五秒钟的Slave
2.剔除与失效主服务器连接断开的时长超过down-after选项指定的时长十倍的Slave
3.按同步数据的偏移量选出数据最完整的Slave
4.如果偏称量相同,选中ID最小的Slave

选出新的master后开始故障转移

1.Sentinel Leader被选中的Redis从服务器发送SLAVEOF NO ONE命令,让它转变为Redis主服务器
2.Sentinel Leader通过发布与订阅功能,将更新后的配置传播给所有其他Sentinel,其他Sentinel对它们的配置进行更新。
3.向所有Redis Slave下达SLAVEOF命令,指向新的Redis Master
4. Redis slaveRedis master重新建立连接,重放rdb保持数据同步
5.在上述转移过程中,伴随着Redis本地配置文件的自动重写,这样即使是实例重启配置也不会丢失
6.原有的master在恢复后降级为slave与新master全量同步

如果Sentinel挂了怎么办?如何保证Sentinel高可用

1.Sentinel自动故障迁移使用raft算法选举领头(leader) sentinel
2.超过半数投票选出leader, sentinel Leader用于下达故障转移的指令
3.如果某个Sentinel Leader挂了,则使用Raft从剩余的Sentinel中选出leader


Sentinel如何知道彼此的存在?

Sentinel的信息在redis的master进行注册redis master持有Sentinel的信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值