【Redis】Redis哨兵模式

【Redis】Redis哨兵模式

Redis主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。

哨兵模式是是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的监控、通知、自动故障转移,是Redis实现高可用的方案。哨兵模式能够在发生故障时自动触发故障转移流程,从而保证集群的高可用性。

哨兵模式概述

Redis 可以存在多台服务器,并且实现了主从复制的功能。哨兵模式是一种特殊的模式,在 Redis 中哨兵是一个独立的进程。其原理是哨兵通过发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 实例是否可以正常工作,如下图所示。

  • 通过发送命令,让 Redis 服务器返回其运行状态,包括主服务器和从服务器。
  • 当哨兵监测到主机出现故障后,会自动将其中一台从服务器切换成主服务器,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换新的主服务器。

但是在现实中,一个哨兵进程监控 Redis 服务器,也可能出现问题,因为这个哨兵进程本身也可能出现故障。为了处理这个问题,可以使用多个哨兵监控,而各个哨兵之间还会相互监控,这样就变为了多个哨兵模式。除了监控各个 Redis 主从服务器,各个哨兵之间还会互相监控,看看哨兵们是否还"活"着。其关系如下图所示。

论述一下故障切换 (failover) 的过程:假设主服务器宕机,哨兵1先监测到这个结果,当时系统并不会马上进行 failover 操作,而仅仅是哨兵1 主观地认为主服务器已经不可用,这个现象被称为主观下线。当后面的哨兵也监测到了主服务器不可用,并且有了一定数量的哨兵认为主服务器不可用后,哨兵之间就会形成一次投票。通过哨兵之间的投票机制,选出新的主服务器后,就会通过发布订阅方式,让各个哨兵对自己监控的服务器进行切换主服务器操作,这个过程被称为客观下线。这样对于 Redis 客户端而言,一切都是透明的。

故障转移流程

故障转移需要选择一个slaver节点来作为master。

选择主Maseter过程大致如下:

  1. 选择优先级最高的节点,通过sentinel配置文件中的replica-priority配置项,这个参数越小,表示优先级越高
  2. 如果第一步中的优先级相同,选择offset最大的,offset表示主节点向从节点同步数据的偏移量,越大表示同步的数据越多
  3. 如果第二步offset也相同,选择run id较小的

这样通过以上四大步骤,实现由Redis Sentinel自动完成故障发现和转移,实现自动高可用。

Redis 哨兵模式的优缺点

哨兵模式优点:最大的优点就是主从可以自动切换,系统更健壮,可用性更高

哨兵模式缺点:最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本

最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本

相关推荐
invicinble11 分钟前
spring提供的其他机制
java·后端·spring
还是鼠鼠20 分钟前
AI掘金头条新闻系统 (Toutiao News)-用户注册-创建用户
后端·python·mysql·fastapi·web
李广坤36 分钟前
别再把 Filter、Interceptor 和 AOP 混为一谈了!从接口加解密谈 Spring 纵深架构设计
后端
我是一颗柠檬42 分钟前
【MySQL全面教学】MySQL条件查询与排序Day4(2026年)
数据库·后端·mysql
2401_878820471 小时前
Redis+Lua脚本实现全局令牌桶限流
数据库·redis·lua
她的男孩1 小时前
后台权限不只是菜单隐藏:Forge Admin 的 RBAC 权限链路拆解
java·后端·架构
苏三说技术1 小时前
IntelliJ IDEA 从卡顿到起飞,只用改这些。。。
后端
身如柳絮随风扬1 小时前
Redis 主从复制与哨兵机制详解:从原理到高可用实战
数据库·redis·缓存
李小狼lee2 小时前
《spring如此简单》第六节--事件发布机制
后端
你好潘先生2 小时前
让 AI 任务不丢进度:YeeroAI 后台续跑与全局快捷操作实践
前端·人工智能·后端