redis及哨兵详解

本文详细介绍了Redis的主从架构,包括关闭主节点持久化、设置主从关系、从库只读及主从复制的过程原理。同时,探讨了Sentinel的作用,如Master状态监测和故障转移,并解释了Sentinel的工作方式,包括实例的心跳检测和主观、客观下线状态的判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.主从架构

1.1 Redis主从架构拓扑图结构

76c81e849f2631dbcd3ad6c951f40bda.png

2.2.1 关闭主节点持久化

通常 Redis 的主节点是不会进行持久化操作,持久化操作主要在从节点进行。从节点是备份节点,没有来自客户端请求的压力,它的操作系统资源往往比较充沛。 

选取一台为主服务器,修改redis.conf配置文件,注释掉save 三个命令关闭rdb快照, 指定关闭aof(appendonly no 默认是关闭的);

vim /etc/redis/6379.conf

2eb87af33827eee6122028d9ee02ba8a.png

cf7440e156bec8c3fb36f7de2670e42d.png

2.2.2 设置主从关系

1.2.1 在安装好单机版的前提下,分别修改每台设备配置文件设置主从

在Redis中设置主从有2种方式:

1.在redis.conf中设置slaveof

a) slaveof <masterip> <masterport>

2、 使用redis-cli客户端连接到redis服务,执行slaveof命令

a) slaveof <masterip> <masterport>

第二种方式在重启后将失去主从复制关系。

我们这里使用第一种方式设置主从,比如以192.168.2.203做主服务器,则在其他设备上配置所属主服务器地址::

vim /etc/redis/6379.conf

增加 slaveof 192.168.2.203 6379

e5eb587bc99aa952be2485f7ee664963.png

1.2.5 查看Redis主从关系

使用Redis客户端连接上主库6379端口

# redis-cli -h 192.168.2.30  -p 6379

查看Redis主从关系 如下图所示

192.168.29.128:6379> info replication

e3178f974627015f0f81c95a52aabd77.png

role:角色信息

slaveX:从库信息

connected_slaves:从库数量

1.2.6 测试

在主库写入数据

ce65928b2649abbd9ceff63e6ccfa494.png

在从库读取数据

723e445c5cd25e64ca7f228f3cf3d9cf.png

2.3.从库只读

默认情况下redis数据库充当slave角色时是只读的不能进行写操作

可以在配置文件中开启非只读:slave-read-only no

2.4.主从复制的过程原理

1.当从库和主库建立MS关系后,会向主数据库发送SYNC命令

2.主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来

3.当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis

4.从Redis接收到后,会载入快照文件并且执行收到的缓存的命令

5.之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致

3.1、Sentinel的作用:

A、Master 状态监测

B、如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave

C、Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

3.2、Sentinel的工作方式:

8e72e2d87c0af60305cd100b67b01018.png

1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令

2):如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。

3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。

4):当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线

5):在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令

6):当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次

7):若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。

若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。

到此结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花踏马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值