redis哨兵、cluster

本文详细介绍了Redis的哨兵(sentinel)系统,用于监控和自动故障转移,确保主从结构的高可用性。哨兵通过监控、通知和故障转移三个阶段实现主从切换。此外,还探讨了Redis集群的结构设计,包括数据存储分布和槽的概念,以实现负载均衡和可扩展性。同时,提到了集群搭建的方法和相关配置选项。
摘要由CSDN通过智能技术生成
主机“宕机”
master
slave
slave
slave
master
关闭master和所有slave
找一个slave作为master
修改其他slave的配置,连接新的主
启动新的master与slave
全量复制*N+部分复制*N
关闭期间的数据服务谁来承接?
找一个主?怎么找法?
修改配置后,原始的主恢复了怎么办?
哨兵 哨兵简介
哨兵
哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的
master并将所有slave连接到新的master。
Sentinel
Sentinel1 Sentinel2 Sentinel3 哨兵简介
哨兵
哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行 监控 ,当出现故障时通过投票机制 选择 新的
master并将所有slave连接到新的master。
Sentinel1 Sentinel2 Sentinel3 哨兵简介
哨兵的作用
监控
不断的检查master和slave是否正常运行。
master存活检测、master与slave运行情况检测
通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服
务器地址
注意:
哨兵也是一台redis服务器,只是不提供数据服务
通常哨兵配置数量为单数
哨兵简介
启用哨兵模式
哨兵工作原理
Contents 启用哨兵模式
配置哨兵
配置一拖二的主从结构
配置三个哨兵(配置相同,端口不同)
参看sentinel.conf
启动哨兵
redis-sentinel sentinel- 端口号 .conf 启用哨兵模式
配置哨兵
配置项
范例
说明
sentinel auth-pass
<服务器名称> <password>
sentinel auth-pass mymaster
itcast
连接服务器口令
sentinel down-after-milliseconds <自定义服
务名称><主机地址><端口><主从服务器总量>
sentinel monitor mymaster
192.168.194.131 6381 1
设置哨兵监听的主服务器信息,最后的参数决定了最终参与选举的服务器
数量(-1)
sentinel down-after-milliseconds
<服务名称><毫秒数(整数)>
sentinel down-after
milliseconds mymaster 3000
指定哨兵在监控Redis服务时,判定服务器挂掉的时间周期,默认30秒
(30000),也是主从切换的启动条件之一
sentinel parallel-syncs
<服务名称><服务器数(整数)>
sentinel parallel-syncs
mymaster 1
指定同时进行主从的slave数量,数值越大,要求网络资源越高,要求约
小,同步时间约长
sentinel failover-timeout
<服务名称><毫秒数(整数)>
sentinel failover-timeout
mymaster 9000
指定出现故障后,故障切换的最大超时时间,超过该值,认定切换失败,
默认3分钟
sentinel notification-script
<服务名称><脚本路径>
服务器无法正常联通时,设定的执行脚本,通常调试使用。
哨兵简介
启用哨兵模式
哨兵工作原理
Contents 哨兵工作原理
主从切换
哨兵在进行主从切换过程中经历三个阶段
监控
通知
故障转移 哨兵工作原理
阶段一:监控阶段
用于同步各个节点的状态信息
获取各个sentinel的状态(是否在线)
获取master的状态
master属性
runid
role:master
各个slave的详细信息
获取所有slave的状态(根据master中的slave信息)
slave属性
runid
role:slave
master_host、master_port
offset
……
slave
master
sentinel
sentinel
ping
info
info 哨兵工作原理
阶段一:监控阶段
slave
master
sentinel
sentinel
ping
info
cmd 连接 ① info
SentinelState
master
slaves
sentinels
SentinelRedisInstance
master
slaves
sentinels
info
SentinelRedisInstance
master
slaves
sentinels
SentinelState
master
slaves
sentinels
cmd 连接
publish
subscribe
info
sentinel 哨兵工作原理
阶段二:通知阶段
sentinel1
sentinel2
sentinel3
slave1
master
slave2
publish sentinel:hello ……
copy
that 哨兵工作原理
阶段三:故障转移阶段
sentinel1
sentinel2
sentinel3
slave1
master
slave2
hello
hello
hello
SentinelRedisInstance
master
flags:SRI_S_DOWN
发送:
SENTINEL is-master-down-by-addr ……
服务器host,port,发起方,状态……
客观下线
主观下线
SentinelRedisInstance
master
flags:SRI_O_DOWN
发送:
SENTINEL is-master-down-by-addr ……
状态…… 哨兵工作原理
阶段三:故障转移阶段
sentinel1
sentinel2
sentinel4
sentinel3
sentinel5
发送:
SENTINEL is-master-down-by-addr ……
挂的ip
挂的端口
竞选次数
自己的runid
哨兵工作原理
阶段三:故障转移阶段
服务器列表中挑选备选master
在线的
响应慢的
与原master断开时间久的
优先原则
优先级
offset
runid
发送指令(
sentinel )
向新的master发送slaveof no one
向其他slave发送slaveof 新masterIP端口 哨兵工作原理
主从切换总结
服务器列表中挑选备选master
在线的
响应慢的
与原master断开时间久的
优先原则
优先级
offset
runid 哨兵工作原理
阶段三:故障转移阶段
监控
同步信息
通知
保持联通
故障转移
发现问题
竞选负责人
优选新master
新master上任,其他slave切换master,原master作为slave故障回复后连接 总结
总结
哨兵模式
什么是哨兵
哨兵模式搭建
哨兵工作原理
监控
通知
故障转移
现状问题
业务发展过程中遇到的峰值瓶颈
redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到10万/秒
内存单机容量达到256G,当前业务需求内存容量1T
使用集群的方式可以快速解决上述问题 集群
集群架构
集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果 集群
集群作用
分散单台服务器的访问压力,实现负载均衡
分散单台服务器的存储压力,实现可扩展性
降低单台服务器宕机带来的业务灾难
集群简介
Redis集群结构设计
cluster集群结构搭建
Contents Redis存储空间
Redis集群结构设计
数据存储设计
key
Redis存储空间
Redis存储空间
Redis存储空间
key 92083…9412
37
92083…9412
Redis存储空间
Redis集群结构设计
数据存储设计
通过算法设计,计算出key应该保存的位置
将所有的存储空间计划切割成16384份,每台主机保存一部分
每份代表的是一个存储空间,不是一个key的保存空间
将key按照计算出的结果放到对应的存储空间
key
Redis存储空间
Redis存储空间
CRC16(key)
%16384
36
37
38
39
40
41
37 Redis存储空间
Redis集群结构设计
数据存储设计
Redis存储空间
Redis存储空间
Redis存储空间
增强可扩展性
key
Redis集群结构设计
集群内部通讯设计
各个数据库相互通信,保存各个库中槽的编号数据
一次命中,直接返回
一次未命中,告知具体位置
Redis存储空间
Redis存储空间
Redis存储空间
A: 0 1~10
B:11~20
C:21~30
D:31~40
A
B
C
A: 0 1~10
B:11~20
C:21~30
D:31~40
A: 0 1~10
B:11~20
C:21~30
D:31~40
集群简介
Redis集群结构设计
cluster集群结构搭建
Contents Cluster集群结构搭建
搭建方式
原生安装(单条命令)
配置服务器(3主3从)
建立通信(Meet)
分槽(Slot)
搭建主从(master-slave)
工具安装(批处理) Cluster集群结构搭建
Cluster配置
添加节点
cluster-enabled yes|no
cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file <filename>
节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout <milliseconds>
master连接的slave最小数量
cluster-migration-barrier <count> Cluster集群结构搭建
Cluster节点操作命令
查看集群节点信息
cluster nodes
进入一个从节点 redis,切换其主节点
cluster replicate <master-id>
发现一个新节点,新增主节点
cluster meet ip:port
忽略一个没有solt的节点
cluster forget <id>
手动故障转移
cluster failover Cluster集群结构搭建
redis-trib命令
添加节点
redis-trib.rb add-node
删除节点
redis-trib.rb del-node
重新分片
redis-trib.rb reshard
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值