redis-Sentinel 哨兵

1,是什么

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance)

监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

–内容来自官网

2,伪分布式实践(单机部署主从)

##开启3台redis: 6380,6381,6382
utils/install_server.sh  #开启多个端口的服务
cp /ect/redis/* ./   #拷贝启动脚本

## 修改配置文件
daemonize no
#logfile /var/log/redis_6380.log
appendonly no

rm -fr /var/lib/redis/* #删除所有持久化目录
mkdir 6380  6381 6382

redis-server /test/6380.cof
redis-cli -p 6380
cd /var/lib/redis/6380
[root@localhost 6380]# ll
total 0

6381上执行
REPLICAOF 127.0.0.1 6380

6380
在这里插入图片描述

6381
追随后会刷新数据
在这里插入图片描述
在6382设置值,6380主里面是没有的
在这里插入图片描述
6382上执行
REPLICAOF 127.0.0.1 6380
追随后数据消失
在这里插入图片描述
6380主上触发RDB
DB saved on disk
在这里插入图片描述

3,异常模拟

(1)从挂掉,修复后,数据同步

在这里插入图片描述
在主里添加数据,另一个从6382是可以看到数据的。
在这里插入图片描述

6381重新启动后,RDP是重新落一遍还是增量?

redis-server /test/6381.conf --replicaof 127.0.0.1 6380 #启动追随,不会落盘
在这里插入图片描述

redis-server /test/6381.conf --replicaof 127.0.0.1 6380 --appendonly yes #启动追随,开启AOF,落盘

在这里插入图片描述
只要开启 RDB,根据ID算出偏移量,部分追加同步
AOF,全量同步

(2)主挂掉,修复后,数据同步

主身上可以发现有多少从节点
故障切换,主挂掉后,可以人为的切换主机

主挂掉后,从的日志
在这里插入图片描述
6381变成主,6382追随6382

6381
REPLICAOF no one
切换成了MASTER
在这里插入图片描述

6382
127.0.0.1:6382> REPLICAOF 127.0.0.1 6381

(3)数据同步过程

在这里插入图片描述

4,主从复制主要配置

replica-serve-stale-data yes
#当复制副本失去与主机的连接时,或者当复制
如果仍在进行中,复制副本可以以两种不同的方式进行操作:
1)如果replica serve stale data设置为“yes”(默认值),则复制副本将仍然回复客户端请求,可能包含过期数据,或者如果这是第一次同步,数据集可能只是空的。
#2)如果replica serve stale data设置为“no”,则replica将用所有类型的命令都出现“正在与主控同步”错误。
数据同步过程中,备机是否支持查询
yes可以查询老数据,no必须同步完

replica-read-only yes
开启只读模式

repl-diskless-sync no
通络、带宽传输
1)磁盘备份:Redis master创建一个新进程来写入RDB磁盘上的文件。稍后,该文件由父级传输以增量方式处理复制副本。
2)无盘:Redis master创建一个新进程,直接写入
#RDB文件到副本套接字,完全不接触磁盘。

repl-backlog-size 1mb

增量复制,大小印象同步数据的成本,挂机时间内写的数据超过1mb,数据会挤出,触发全量。
当复制副本断开连接一段时间后,复制副本数据想要重新连接,通常不需要完全重新同步,而是部分重新同步重新同步就足够了,只需传递复制副本丢失的部分数据断开连接。
复制积压工作越大,复制副本的保存时间就越长已断开连接,稍后可以执行部分重新同步。

min-replicas-to-write 3
min-replicas-max-lag 10
最小几个写成功,数据准确和一致性,开启会向强一致性靠拢,取舍可用性和一致性。

5,投票机制原理和演示

在这里插入图片描述

sentinel monitor mymaster 127.0.0.1 6379 2
Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意。

[root@localhost test]# vi 26380.conf
port 26380
sentinel monitor mymaster 127.0.0.1 6380 2

[root@localhost test]# cp 26380.conf 26381.conf
[root@localhost test]# cp 26380.conf 26382.conf
修改port

redis-server /test/6380.conf
redis-server /test/6381.conf --replicaof 127.0.0.1 6380
redis-server /test/6382.conf --replicaof 127.0.0.1 6380

redis-server /test/26380.conf --sentinel
redis-server /test/26381.conf --sentinel
redis-server /test/26382.conf --sentinel

6380主挂掉后,哨兵会发起投票先选出一个主,然后切换。
哨兵日志选出主
在这里插入图片描述
6381从日志,从被切换成了主
在这里插入图片描述
26381.conf文件内容被修改,记录过程
在这里插入图片描述

一个哨兵如何知道其他哨兵的?

redis 发布订阅通讯,发现其他哨兵
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值