(目录)
Redis 哨兵(Sentinel)架构
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 Master4.Redis slave向Redis 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的信息
。
标签:slave,Redis,redis,sentinel,Master,Sentinel,master From: https://blog.51cto.com/panyujie/8354551