Redis集群 - 哨兵模式
# Redis集群 — 哨兵模式
# 主从复制
主机数据更新后根据配置和策略,自动同步到备机的master / slave机制,Master 已写为主,slave 以读为主。
工作原理:一主多仆、级联结构
# 哨兵介绍
sentinel,中文名是哨兵。哨兵是 Redis 集群架构中非常重要的一个组件,主要有以下功能:
- 集群监控:负责监控master 和 slave 进程是否正常工作。
- 消息通知:如果某个 Redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。
- 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。
- 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址。
哨兵用于实现 Redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。
- 故障转移时,判断一个 master node 是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题。
- 即使部分哨兵节点挂掉了,哨兵集群还是能正常工作的。
# 哨兵模式
在 redis3.0 以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控 master 节点的状态,如果 master 节点异常,则会做主从切换,将某一台 slave 作为 master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现 一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率
当哨兵检测到 master 宕机,会自动将 slave 切换称 master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让他们切换主机。
主观下线:单个哨兵实例对服务器做出的下线判断。(有可能是网络不同的问题)
客观下线:多个哨兵实例对同一个服务器做出下线的判断。
当哨兵监视该服务器主观下线后,会询问其他监视该服务的哨兵,看他们是否也认为该服务主观下线,接收到足够数量的哨兵判断为主观下线后,就可以认为该服务器客观下线。
根据优先级、偏移量、runid 选择新的主服务器。
- 优先级在 redis.conf 中,默认为 slave-priority 100,值越小优先级越高。
- 偏移量 offset 可以判断哪个 slave 复制越多的数据,值越大优先级越高
- 每个redis实例启动后都会随机生成一个40位的 runid,值越小优先级越高
编辑 (opens new window)
上次更新: 2023/08/20, 21:21:52