【Redis进阶】Redis哨兵Sentinel

目录

什么是哨兵机制

为什么要引入哨兵机制

图解

哨兵工作流程

1.监控

2.故障转移

3.通知客户端

4.重新配置从服务器

故障转移流程

哨兵机制的配置

哨兵机制的优缺点

优点:

缺点:


什么是哨兵机制

Redis哨兵机制(Redis Sentinel)是Redis提供的一种高可用性解决方案,用于监控Redis主从复制的架构,,自动实现故障转移和系统通知,从而确保Redis服务的高可用性。

为什么要引入哨兵机制

我们都知道Redis具备主从复制的功能,假如现在主从复制中,有一个从节点因为网络抖动或者故障与主节点断开连接,这时候对其他的节点影响并不大,Redis的客户端可以从其他的节点上正常读取数据,并且也不影响对主节点的读和写操作。等待网络稳定,进行增量同步或者全量同步数据。但是主节点发生网络断开的时候,虽然可以进行读操作,但是从节点不能自动的升级成主节点。通常情况下,需要人工干预重新选择主节点,并且更新其他从节点的配置。这样不仅费时费力,还有可能导致出错概率比较高,最终导致服务不可用。

针对上述的情况,Redis引入了哨兵(Sentinel)机制。Redis Sentinel是一个分布式系统,用于监控Redis集群中各个节点的状态,并在发现故障时自动进行故障转移。它可以自动识别主节点的故障,并将一个从节点晋升为主节点,从而实现故障恢复的自动化,大大提高系统的可用性和稳定性,降低故障恢复的时间成本。

图解

哨兵机制一般由多个哨兵实例组成,它们相互通信,形成一个分布式系统。通常来说,为了提高可靠性,至少需要部署 3 个哨兵实例。 

哨兵工作流程

1.监控

  • 每个哨兵节点定期向主从服务器发送 PING 命令,如果在一定时间内未收到 PONG 响应,哨兵将该节点标记为不可用(Subjectively Down,简称 SDOWN)。
  • 当一个哨兵将 master 标记为 sdown 后,它会在指定时间内,每秒向其他哨兵发送 i消息来询问它们是否也认为该 master 是 sdown。如果收到该消息的其他哨兵中,有达到法定票数的数量(可配置的最小数量)的哨兵都认为那个 master 是 sdown,那么就可以认为是 odown,即客观认为 master 宕机。

2.故障转移

  • 当哨兵确定主服务器已经下线时,会触发自动故障转移。
  • 哨兵通过投票的方式选举出一个从服务器,将其提升为新的主服务器,并通知其他从服务器开始同步新的主服务器。

3.通知客户端

  • 哨兵会将新的主服务器地址通知客户端,使其连接到新的主服务器。

4.重新配置从服务器

  • 哨兵会将其余从服务器重新配置为新的主服务器的从服务器,确保数据同步正常进行。

故障转移流程

  1. 主节点宕机
  2. 哨兵节点首次发现主节点宕机
  3. 发起投票,当有超过一半哨兵认为主节点宕机
  4. 哨兵中选举出领导,这个leader负责选出一个从节点作为主节点
  5. 开始故障转移

哨兵中通过Raft 算法用于选举领导者(leader)(有兴趣的可以了解一下)

哨兵机制的配置

要启用哨兵机制,需要配置 sentinel.conf 文件。下面是一个基本的哨兵配置示例:

# 哨兵监控主服务器的名称和地址
sentinel monitor mymaster 127.0.0.1 6379 2

# 配置哨兵的通信端口
port 26379

# 配置哨兵判断服务器下线的超时时间
sentinel down-after-milliseconds mymaster 5000

# 配置哨兵自动故障转移的超时时间
sentinel failover-timeout mymaster 15000

# 配置哨兵在进行故障转移时同时最多可以有多少个从服务器对新主服务器进行同步
sentinel parallel-syncs mymaster 1

哨兵机制的优缺点

优点

  1. 高可用性:自动故障转移和实时监控确保了 Redis 的高可用性。
  2. 自动化管理:通过哨兵机制,管理者无需手动干预即可完成主从切换和配置更新。
  3. 横向扩展:哨兵机制支持分布式部署,通过增加哨兵实例来增强系统的可靠性。

缺点

  1. 一致性问题:在故障转移过程中,可能会出现短暂的不一致性,导致部分客户端读取到旧数据。
  2. 复杂性:哨兵机制的配置和维护相对复杂,尤其是在大规模部署场景中。

Redis 哨兵机制是 Redis 提供的一种高可用性解决方案,能够在主服务器故障时自动进行故障转移,保证 Redis 服务的持续可用性。通过合理的配置和部署,哨兵机制可以为 Redis 集群提供强大的监控和自动恢复功能,是保障 Redis 高可用性的重要工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值