Redis(哨兵模式)

哨兵模式的定义:

是Redis的一种高可用解决方案,通过运行多个Redis实例来监控主从Redis实例的状态,当主实例出现故障时,哨兵会自动选举一个从实例作为新的主实例,从而保证系统的高可用性。哨兵模式可以监控多个主从Redis实例,并在主实例故障时自动进行故障转移,同时还可以对故障进行报警和通知。这种模式可以有效地提高Redis系统的可用性和稳定性。

主从复制中的缺点:

主从复制中主节点宕机了,还需要手工把另一台从节点提升为主节点,这样就不能实现真正的高可用。

上篇文章实现了一主两从的Redis集群,实现了一定程度上的高可用,相比于一个单节点的Redis有了很大的提升。

上篇文章的链接:http://t.csdnimg.cn/51cOU

实现故障的自动转移就是哨兵模式干的事。哨兵会以一个独立的进程运行再Redis集群中。用来监控Redis中的各个节点是否运行正常。

哨兵主要用来执行以下几个功能:

1. 监控:通过不断的发送命令来检查Redis节点是否正常。

2. 通知:如果发现某个节点出现了问题,那么哨兵就会通过发布订阅模式来通知其他节点。

3. 自动故障转移: 当主节点不能正常工作的时候,哨兵会开始一个自动故障转移的操作。他会将一个从节点升级为新的主节点,然后将其他从节点指向新的主节点 。

配置哨兵模式:

首先需要在Redis集群中添加一个哨兵节点,可以使用:

cpp 复制代码
redis -sentinel

来启动哨兵节点。然后创建一个sentinel.cof配置文件。

在配置文件中添加一条语句。monitor后面的是主节点的名称,可以自己定义,最后那个1代表只需要一个哨兵节点同意就可以进行故障转移了。

接下来就可以启动哨兵节点了:

cpp 复制代码
redis-sentinel sentinel.conf

通过上述语句启动一个哨兵节点。

启动完成之后就可以看到一个运行在26379端口的哨兵模式。

然后将6379端口的服务端终止(ctrl + c或者将终端×掉),来模拟主节点宕机的情况。

然后就会发现现在新的主节点的端口为6381。

再来查看6381这个端口的节点,发现他现在是主节点。

6380依然是从节点,他的主节点是6381。

最后有一点需要注意的是:

哨兵本身也是一个进程,自己也会有单节点故障的问题,所以在一般的生产环境会使用3个哨兵节点来保证高可用。这3个哨兵节点会通过选举的方式来选出一个领导者,然后由领导者来监控其他节点,如果领导者挂了,那么其他哨兵节点会重新选举出一个领导者。这样就可以保证哨兵节点的高可用了。

**Redis中多个哨兵节点的选举是自动的。**当主节点出现故障或不可达时,哨兵节点会自动进行选举,选举出新的主节点,并通知其他从节点切换到新的主节点上。这样可以保证系统的高可用性和故障恢复能力。哨兵节点之间会相互通信,通过投票来决定新的主节点,并在选举完成后自动更新配置,使得系统可以继续正常工作。

相关推荐
程序员TNT3 分钟前
Shoptnt 安全架构揭秘:JWT 认证与分布式实时踢人方案
java·redis·分布式·架构
水无痕simon9 分钟前
3 水平分表
java·数据库
海梨花16 分钟前
字节一面 面经(补充版)
jvm·redis·后端·面试·juc
恣艺16 分钟前
探索数据库世界:从基础类型到实际应用
数据库
小钻风33661 小时前
IDEA连接redis数据库时出现Failed to connect to any host resolved for DNS name.
数据库
chen(o561-6o623o7)1 小时前
AI人工智能高架十字迷宫AI人工智能高架十字迷宫视频分析系统
经验分享
ulias2121 小时前
单元最短路问题
数据库·c++·算法·动态规划
快乐肚皮1 小时前
Redis消息队列演进史
java·redis
安卓开发者1 小时前
鸿蒙NEXT中SQLite数据库全面实战指南
数据库·sqlite·harmonyos
淮北也生橘121 小时前
Linux的V4L2视频框架学习笔记
linux·笔记·学习·音视频·嵌入式linux