Redis主从与哨兵架构详解

目录

主从架构

主从环境搭建

主从复制流程

1. 全量复制

2. 部分复制

主从风暴

哨兵架构

概念

哨兵环境搭建


主从架构

主从环境搭建

Redis主从与哨兵架构详解_第1张图片

1. 复制一份redis.conf文件, 修改下面几行配置

port 6380
pidfile /var/run/redis_6380.pid
logfile "6380.log"
dir /usr/local/redis-data/6380
# 需要注释掉bind或改成0.0.0.0
# bind 127.0.0.1

# 配置主从复制
replicaof 192.168.6.128 6379   # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replica-read-only yes  # 配置从节点只读

2. 启动从节点

src/redis-server redis-6380.conf

3. info命令检查主从是否搭建成功

Redis主从与哨兵架构详解_第2张图片

主从复制流程

1. 全量复制

Redis主从与哨兵架构详解_第3张图片

1. 从节点向主节点发起psync命令, 并建立长连接

2. 主节点收到psync时候, 执行bgsave命令, 生成最新RDB快照

3. 主节点在生成RDB快照期间, 更新数据的命令写入buffer缓存

4. 主节点生成RDB结束后, 发送给从节点, 从节点先清空所有旧数据,再加载RDB

5. 主节点把buffer发送从节点, 从节点执行buffer的写命令

6. 主节点通过socket长连接, 持续把写命令写到从节点,保证主从一致

2. 部分复制

Redis主从与哨兵架构详解_第4张图片

主从风暴

如果从节点太多, 一个主节点复制到多个从节点压力太大,可能造成主从风暴.

解决: 让部分从节点去从节点复制,如下架构

Redis主从与哨兵架构详解_第5张图片

哨兵架构

概念

        sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。

        哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点宕机时,哨兵会从剩余从节点选举新的主节点,并且将新的redis主节点通知给client端.

哨兵环境搭建

Redis主从与哨兵架构详解_第6张图片

1.复制一份sentinel.conf, 修改下面几个配置,注意配置的几个目录要有写入权限

port 26379
daemonize yes
pidfile "/var/run/redis-sentinel-26379.pid"
logfile "26379.log"
dir "/tmp"
# sentinel monitor    
# quorum是一个数字,指明当有多少个sentinel认为一个master失效时(值一般为:sentinel总数/2 + 1),master才算真正失效
sentinel monitor mymaster 192.168.6.128 6379 2   # mymaster这个名字随便取,客户端访问时会用到

2、启动sentinel哨兵实例

src/redis-sentinel sentinel-26379.conf

3. 查看sentinel的info信息,验证是否搭建哨兵成功

src/redis-cli -p 26379

Redis主从与哨兵架构详解_第7张图片

你可能感兴趣的:(redis)