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

相关推荐
全栈老石1 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
曲幽3 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
倔强的石头_20 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1774 天前
《从零搭建NestJS项目》
数据库·typescript
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
加号35 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏5 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker