redis 哨兵(分享)

本文介绍了Redis的主从架构和哨兵系统,用于实现数据冗余和高可用性。主服务器负责写操作,从服务器执行读操作。哨兵系统则提供了监控、故障检测和自动故障切换的功能,确保服务的连续性和稳定性。在主服务器宕机时,哨兵能够自动将从服务器提升为主服务器,应用透明地进行切换,并在故障恢复后重新配置集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前戏,什么是redis

RDBMS :MySQL,Oracle ,MSSQL,PG
NoSQL  :Redis,MongoDB,列存储存储相关
NewSQL----->分布式数据库架构(学习了MongoDB)
缓存产品介绍:
memcached (大公司会做二次开发)
redis
Tair

redis 主从

 当有多台 Redis 服务器时,肯定就有一台主服务器和多台从服务器。一般来说,主服务器进行写操作,从服务器进行读操作。

 redis 哨兵

1、监控
2、自动选主,切换(6381 slaveof no one)
3、2号从库(6382)指向新主库(6381)
4、应用透明 
5、自动处理故障节点

第一阶段:正常运行

第二阶段 master宕机

第三阶段:恢复

拓展 多个Sentinel同时监控

 

 

 

 

### Redis 哨兵机制的作用 Redis 哨兵机制是一种用于提升 Redis 高可用性的解决方案,主要功能在于监控、故障转移以及通知。通过合理的配置,它可以实现自动化的主从切换,从而保障系统的稳定性和可靠性[^1]。 具体来说,Redis 哨兵的主要作用包括以下几个方面: - **监控**:持续监测 Redis 主节点和从节点的状态,判断它们是否正常运行。 - **故障转移**:当检测到主节点不可用时,哨兵会触发选举过程并选出一个新的主节点来替代原来的主节点。 - **通知**:一旦完成主从切换操作后,哨兵负责更新其他从节点的复制源指向新的主节点,并告知客户端重新连接至最新的主节点地址。 这些特性使得即使在单个实例失败的情况下也能够维持数据访问的一致性和服务连续性。 ### Redis 哨兵的工作原理 #### 一、基本概念 Redis 哨兵由多个进程组成,每个进程都独立执行以下任务: - 定期向被监视的所有Master与Slaves发送PING命令以确认其存活状况; - 如果发现某个Master进入SDOWN(Subjective Down, 即主观下线)状态,则尝试与其他Sentinels沟通验证该情况的真实性; - 当达到预设数量(quorum)以上的Sentinels均认为此Master确实已失效时,则将其标记为ODOWN(Objective Down, 客观下线),进而发起Leader选举决定哪个Sentinel来进行后续的操作如挑选合适的Slave晋升成新的Master等动作[^4]. #### 二、心跳检测机制 为了及时感知各个Redis实例的生命迹象,Sentinel采用周期性的心跳包形式进行探测: - 每隔一定时间间隔(Sentinel默认设置),每一个单独工作的sentinel都会分别给master/slave发出ping请求; - 对于收到回复超时时限超过规定阈值次数的目标对象(sentinel本身也会参与计票表决),则判定为目标可能已经失联. 这种基于多数共识原则的方法有效减少了误判概率的同时提高了整体系统的鲁棒程度. 另外值得注意的是,sentinels之间还会互相通信分享各自掌握的信息以便达成全局视角下的最优决策方案. #### 三、选主逻辑 当确认原master彻底丧失服务能力之后,剩下的slaves当中满足特定条件者才有资格成为候选接班人: - 数据最新度考量:优先考虑那些拥有最接近最后时刻同步记录副本的那个slave. - 性能指标评估:综合考量cpu负载率,memory usage等因素择优录取. 最终选定的新master会被立即通告全网使之生效.[^2] ### 如何配置 Redis 哨兵? 以下是关于如何配置 Redis 哨兵的一个简单指南: 1. 创建 `sentinel.conf` 文件,在其中定义至少三个不同的 sentinel 实例及其监听端口。 ```bash port 26379 dir /tmp sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 ``` 2. 使用 Docker 或直接安装的方式启动 Sentinel 进程。 ```bash redis-sentinel /path/to/sentinel.conf --daemonize yes ``` 3. 若要使应用程序支持读取偏好策略可参考下面代码片段调整springboot项目相应部分参数设定:[^5] ```java @Bean public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){ return builder -> builder.readFrom(ReadFrom.REPLICA_PREFERRED); } ``` 以上步骤展示了基础版redis集群配合sentinel保护措施的实际部署方法论之一角.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值