【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 哨兵模式的优缺点

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

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

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

相关推荐
BingoGo6 小时前
PHP clone 之后,为什么改副本会影响原对象?
后端·php
JaguarJack6 小时前
PHP clone 之后,为什么改副本会影响原对象?
后端·php·服务端
醉颜凉7 小时前
Redis网络层解析:高性能服务器架构设计与实现
redis·epoll·网络架构·i/o多路复用·事件驱动
小灰灰搞电子7 小时前
Rust+Slint 实现动态消息提示框源码分享
开发语言·后端·rust
醉颜凉7 小时前
Redis 与 Pika 对比:大容量冷热数据落盘方案与混合存储架构
redis·pika·混合存储·存储架构·冷热数据分离
小奏技术7 小时前
10 MB 的 Postman 替代品,启动不到 1 秒
后端
东风破_7 小时前
Text2SQL :用自然语言操作 SQLite 数据库
人工智能·后端
刃神太酷啦10 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
三84410 小时前
SSRF 打内网 Redis:gopher 原理与实操
redis·web安全·bootstrap·ssrf
youm200311 小时前
认识Redis
redis·笔记·学习