Redis-哨兵模式

1.redis哨兵模式作用

1.这里的哨兵作用:

监控:Sentinel会不断检查您的master和slave是否按预期工作

自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主通知:Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端
2、监控原理

Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:

主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。

客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例,客观下线。quorum值最好超过Sentinel实例数量的一半。
3、故障恢复原理

一旦发现master故障,sentinel需要在salve中选择一个作为新的master,选择依据是这样的:

首先会判断slave节点与master节点断开时间长短,如果超过指定值(down-after-miliseconds*10)则会排除该slave节点然后判断slave节点的slave-priority值,越小优先级越高,如果是0则永不参与选举0如果slave-prority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高

最后是判断slave节点的运行id大小,越小优先级越高。

当选出一个新的master后,该如何实现切换呢?

流程如下:

sentinel给备选的slave1节点发送slaveofno one命令(反客为主),让该节点成为master

2.redis哨兵模式的搭建

1.编辑哨兵模式配置文件

同样的这是一台虚拟机搭建redis哨兵模式

复制代码
mkdir /usr/local/redis-6.2.6/sentinel
cd /usr/ocal/redis-6.2.6/sentinel
mkdir 27001 27002 27003

搭建三台哨兵检测,注意哨兵模式只能是单数,因为涉及到当master主机断连的情况下,重新选取主机,如果是双数的哨兵主机导致投票两台slave主机为master会出现票数相同问题,因此哨兵模式只能为单数

在27001目录下创建sentinel.conf文件,编辑内容为

复制代码
port 27001
sentinel announce-ip 192.168.217.151
sentinel monitor mymaster 192.168.217.151 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel auth-pass mymaster xxx
dir "/usr/local/redis-6.2.6/sentinel/27001"

同样的将文件内容拷贝到27002文件夹,还有27003文件夹,且只需要修改端口

2.启动哨兵模式

先启动Redis(一主二仆)

复制代码
./redis-server /usr/local/redis-6.2.6/6379/redis-6379.conf &
./redis-server /usr/local/redis-6.2.6/6380/redis-6380.conf &
./redis-server /usr/1ocal/redis-6.2.6/6381/redis-6381.conf &

./redis-cli -p 6379
./redis-cli -p 6380
./redis-cli -p 6381

# 添加临时主从配置
slaveof 192.168.217.151 6379

在启动哨兵模式

复制代码
#第1个
./redis-sentinel /usr/local/redis-6.2.6/sentinel/27001/sentinel.conf
#第2个
./redis-sentinel /usr/local/redis-6.2.6/sentinel/27002/sentinel.conf
#第3个
./redis-sentinel /usr/local/redis-6.2.6/sentinel/27003/sentinel.conf

3.开启测试

让主节点挂机,观察master主机的变化

关闭6379master主机模拟服务关闭,此时两台从机都无法连接

需要重新登录之后才可以继续使用,此时服务是没有中断的,重新登录后6381这台服务器成为了master主机

相关推荐
电魂泡哥3 小时前
SQL出现filesort 一定慢吗
数据库·sql
muddjsv5 小时前
大中小型企业数据层配置规模分析与选型指南
数据库
Runawayliquor5 小时前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
IT_Octopus5 小时前
Spring Boot 实战:@PostConstruct + Caffeine 缓存初始化与定时刷新
spring boot·后端·缓存
yangshicong6 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
chimchim666 小时前
pg dblink使用查询
数据库
Java面试题总结6 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
一路向北·重庆分伦7 小时前
09:Redis-高级特性与原理
redis
绝知此事7 小时前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树
吴可可1238 小时前
用Teigha修改并保存CAD文件
数据库·算法·c#