redis集群-主从/哨兵

redis集群-主从/哨兵

REDIS cluster-tutorial -- Redis中文资料站 -- Redis中国用户组(CRUG)

REDIS cluster-spec -- Redis中文资料站 -- Redis中国用户组(CRUG)


redis集群一共有三种,

主从(master-slave)

主从模式/主从复制,就类似mysql的读写分离。主节点主要用来承担写的操作,从节点用来处理读请求。一个主节点可以有多个从节点,但是从节点只能有一个主节点(有点像废话(ง •_•)ง)

主节点配置文件:

daemonize yes
port 6379
# log、pid、data路径
logfile E:softTollReidsmaster-slaveRedis-x64-5.0.9-masterredis_6379.log
pidfile E:softTollReidsmaster-slaveRedis-x64-5.0.9-masterredis_6379.pid
dir E:softTollReidsmaster-slaveRedis-x64-5.0.9-masterdata

# aof
# 主节点打开AOF机制
appendonly yes
# master
# 绑定本台机器的IP,否则主从节点无法通信
bind 127.0.0.1
# 设置master的认证口令为redis
requirepass redis
# backlog大小
repl-backlog-size 1mb
# 快照同步的超时时间
repl-timeout 30
# 开启无盘复制
repl-diskless-sync yes
# 无盘复制的延迟默认为5s,是为了等待更多的slave连接
repl-diskless-sync-delay 5
# 是否开启主从节点复制数据的延迟机制
# 当关闭时,主节点产生的命令数据无论大小都会及时地发送给从节点,这样主从之间延迟会变小
# 但增加了网络带宽的消耗。适用于主从之间的网络环境良好的场景
# 当开启时,主节点会合并较小的TCP数据包从而节省带宽。
# 默认发送时间间隔取决于Linux的内核,一般默认为40毫秒。
# 这种配置节省了带宽但增大主从之间的延迟。适用于主从网络环境复杂或带宽紧张的场景
repl-disable-tcp-nodelay no
# 触发快照同步的条件
# 如果增量同步的缓存大于256MB,或者超过60s大于64MB,则触发快照同步
client-output-buffer-limit slave 256mb 64mb 60
# 主从节点进行心跳的时间间隔
repl-ping-slave-period 8

从节点配置

daemonize yes
# 由于单机模仿所以指定端口
port 6389
# log、pid、data路径
logfile E:softTollReidsmaster-slaveRedis-x64-5.0.9-slaveredis_6379.log
pidfile E:softTollReidsmaster-slaveRedis-x64-5.0.9-slaveredis_6379.pid
dir E:softTollReidsmaster-slaveRedis-x64-5.0.9-slavedata

# slave
# 绑定本机的IP
bind 127.0.0.1
# 绑定master的ip和port
slaveof 127.0.0.1 6379
# 从节点只读
slave-read-only yes
# 从节点在处于快照同步期间是否对外提供服务
slave-serve-stale-data yes
# 如果 master 检测到 slave 的数量小于这个配置设置的值,将拒绝对外提供服务,
# 0 代表,无论 slave 有几个都会对外提供服务
min-slaves-to-write 0
# 如果 master 发现大于等于 ${min-slaves-to-write} 个 slave 与自己的心跳超过此处配置的时间(单位s)
# 就拒绝对外提供服务
min-slaves-max-lag 10
# master的认证口令
masterauth redis
redis集群-主从/哨兵

大致流程如下:

redis 2.8版本以上使用psync命令完成同步,过程分“全量”与“部分”复制 全量复制: 一般用于初次复制场景(第一次建立SLAVE后全量) 部分复制: 网络出现问题,从节点再次连主时,主节点补发缺少的数据,每次数据增加同步 心跳: 主从有长连接心跳,主节点默认每10S向从节点发ping命令,repl-ping-slave-period控制发送频率

优点

缺点

哨兵(sentinel)

因为主从模式存在的问题,redis又提供了哨兵模式来解决主从的问题。

当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。

哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个 Redis 实例。

redis集群-主从/哨兵

哨兵个数一般是奇数个,这个是基于选举来的。

哨兵模式的三个定时任务:

哨兵每隔10秒发送一次info到各个节点(主从都包括)

哨兵每个2秒发一次publish/subscribe命令到主节点

哨兵每个1秒向所有节点发送一个ping命令(所有节点也包含哨兵)

应用程序链接是哨兵节点。因为主从节点是由哨兵来决定的。

哨兵也同样需要主从(参考zk的选举机制)。

主观下线&客观下线

主观下线,某一个哨兵发现某节点有问题,该哨兵任务这个节点下线

客观下线,某一个哨兵节点发现某个节点错误,向其他的哨兵节点发出询问。若在其他哨兵节点上发现该节点有超过半数以上的主观下线,则该节点处于客户下线。


哨兵模式可以做那些事

哨兵搭建

sentinel monitor mymaster 127.0.0.1 6379 2 // 监听主节点6379 sentinel auth-pass mymaster 12345678 // 连接主节点时的密码

./redis-sentinel conf/sentinel_redis.conf &


哨兵模式也可以监听多个主从


redis集群-主从/哨兵


没有封面,这边写的很烂。留着自己看,以后在来改这篇

展开阅读全文

页面更新:2024-04-01

标签:主从   哨兵   集群   都会   快照   节点   绑定   故障   命令   机制   模式   发现   通知   时间   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top