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主机

相关推荐
devilnumber1 小时前
Oracle 与 MySQL substr 函数差异总结
java·数据库·mysql·oracle
—Miss. Z—2 小时前
计算机等级考试三级数据库技术—选择题
数据库·mysql
www_aiyuanma_vip2 小时前
PC 手机电商(MySQL 版)
数据库·mysql·智能手机
Databend2 小时前
AI 时代的数据工程挑战:从复杂链路走向统一数据底座
大数据·数据库·云计算
treacle田2 小时前
达梦数据库-Linux DM数据守护主备集群缩改为单机-记录总结
linux·服务器·数据库·主备集群改单机
SelectDB技术团队2 小时前
Apache Doris 支持同步/异步物化视图与 ROLLUP,多表加速能力优于 StarRocks
大数据·数据库·doris·技术选型·物化视图·starrock·查询加速
super大力张2 小时前
MOE基于结构的药物设计(七):Ligand R-Vectors——如何判断配体可以从哪里继续生长?
数据库·算法·cadd·moe·svl·基于结构的药物设计
Databend2 小时前
Databend 增量物化视图:基于 Change Tracking 的增量刷新与一致性读取
大数据·数据库·sql