Redis主从架构

以下是分步实现Redis主从架构的详细指南,使用1个主节点+2个从节点的配置方案:


在这里插入图片描述

主从架构的典型应用对比

场景单节点架构主从架构优势
读请求占比80%+单节点CPU飙升至90%读请求分摊到3个节点,CPU均载30%
主节点故障服务完全中断,数据可能丢失30秒内自动切换从节点为新主节点
全量数据备份需停机执行SAVE在任意从节点执行无感知备份
跨地域访问美国用户访问上海节点延迟200ms+美国用户直连本地从节点,延迟<50ms

在Spring boot项目里面使用需要配置Lettuce客户端实现读写分离可以查看这个链接去配置Redis主从架构配置读写分配置

环境准备

  1. 确保已安装Redis(推荐6.x+版本)
  2. 准备三份Redis配置文件(建议使用不同端口)
  3. 本示例使用同一服务器演示,实际生产环境建议分离部署

步骤1:创建Redis实例

1.1 创建配置文件目录
mkdir -p /etc/redis/{master,slave1,slave2}
1.2 生成主节点配置(6379端口)(默认就是主节点)
cat > /etc/redis/master/redis.conf <<EOF
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis_6379.log"
dir /var/lib/redis/6379
# 可选密码配置(生产环境必选)
# requirepass your_master_password
EOF
1.3 生成从节点配置(6380/6381端口)
# 从节点1(6380)
cat > /etc/redis/slave1/redis.conf <<EOF
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
logfile "/var/log/redis_6380.log"
dir /var/lib/redis/6380
replicaof 127.0.0.1 6379
# 如果主节点有密码需添加
# masterauth your_master_password
EOF

# 从节点2(6381)
cat > /etc/redis/slave2/redis.conf <<EOF
port 6381
daemonize yes
pidfile /var/run/redis_6381.pid
logfile "/var/log/redis_6381.log"
dir /var/lib/redis/6381
replicaof 127.0.0.1 6379
# masterauth your_master_password
EOF

replicaof 127.0.0.1 6379 这个是指定从节点的指令主节点是 127.0.0.1 6379

步骤2:启动Redis实例

# 创建数据目录
mkdir -p /var/lib/redis/{6379,6380,6381}

# 启动主节点
redis-server /etc/redis/master/redis.conf

# 启动从节点
redis-server /etc/redis/slave1/redis.conf
redis-server /etc/redis/slave2/redis.conf

步骤3:验证主从关系

3.1 检查主节点信息
redis-cli -p 6379 info replication

输出应包含:

role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=...
slave1:ip=127.0.0.1,port=6381,state=online,offset=...
3.2 检查从节点信息
redis-cli -p 6380 info replication | grep -E "role|master"
redis-cli -p 6381 info replication | grep -E "role|master"

预期输出:

role:slave
master_host:127.0.0.1
master_port:6379

步骤4:测试数据同步

4.1 主节点写入数据
redis-cli -p 6379 set test_key "hello_world"
4.2 从节点查询数据
redis-cli -p 6380 get test_key  # 应返回"hello_world"
redis-cli -p 6381 get test_key  # 应返回"hello_world"

生产环境优化建议

  1. 安全配置

    • 启用密码认证(requirepass + masterauth)
    • 绑定特定IP(bind配置项)
    • 禁用危险命令:rename-command FLUSHALL ""
  2. 持久化配置

    • 主节点关闭持久化(避免磁盘IO影响性能)
    • 从节点启用RDB或AOF持久化
  3. 高可用方案

    • 搭配Sentinel实现自动故障转移
    • 使用Redis Cluster方案
  4. 监控配置

    • 启用Redis监控命令
    • 配置Prometheus+Redis_exporter监控

常见问题排查

  1. 从节点无法连接主节点

    • 检查防火墙设置
    • 确认masterauth与requirepass匹配
    • 查看Redis日志:tail -f /var/log/redis_*.log
  2. 数据同步延迟

    • 监控master_repl_offsetslave_repl_offset
    • 检查网络带宽和从节点性能
  3. 主从切换后数据不一致

    • 使用redis-check-rdb检查持久化文件
    • 检查主从复制积压缓冲区:repl_backlog_active

通过以上步骤,您已经成功搭建了一个基础的Redis主从复制架构。建议根据实际业务需求进一步配置优化参数和安全策略。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值