您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页redis-Sentinel 哨兵

redis-Sentinel 哨兵

来源:测品娱乐

1,是什么

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

–内容来自官网

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
追随后会刷新数据

3,异常模拟

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

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,投票机制原理和演示

[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 发布订阅通讯,发现其他哨兵

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务