目录
主从架构
主从环境搭建
主从复制流程
1. 全量复制
2. 部分复制
主从风暴
哨兵架构
概念
哨兵环境搭建
主从架构
主从环境搭建
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命令检查主从是否搭建成功
主从复制流程
1. 全量复制
1. 从节点向主节点发起psync命令, 并建立长连接
2. 主节点收到psync时候, 执行bgsave命令, 生成最新RDB快照
3. 主节点在生成RDB快照期间, 更新数据的命令写入buffer缓存
4. 主节点生成RDB结束后, 发送给从节点, 从节点先清空所有旧数据,再加载RDB
5. 主节点把buffer发送从节点, 从节点执行buffer的写命令
6. 主节点通过socket长连接, 持续把写命令写到从节点,保证主从一致
2. 部分复制
主从风暴
如果从节点太多, 一个主节点复制到多个从节点压力太大,可能造成主从风暴.
解决: 让部分从节点去从节点复制,如下架构
哨兵架构
概念
sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点宕机时,哨兵会从剩余从节点选举新的主节点,并且将新的redis主节点通知给client端.
哨兵环境搭建
1.复制一份sentinel.conf, 修改下面几个配置,注意配置的几个目录要有写入权限
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel-26379.pid"
logfile "26379.log"
dir "/tmp"
# sentinel monitor <master-redis-name> <master-redis-ip> <master-redis-port> <quorum>
# 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