1. Redis主从架构概述
Redis主从复制是构建高可用Redis服务的基础架构模式。通过将一台Redis服务器(主节点)的数据自动同步到一台或多台Redis服务器(从节点),可以实现数据冗余备份、读写分离和故障转移等关键功能。
在实际生产环境中,一主一从是最基础的部署方案。主节点处理所有写操作,从节点通过异步复制机制同步主节点数据,同时可以承担读请求,有效分担主节点压力。当主节点出现故障时,可以手动将从节点提升为新主节点,快速恢复服务。
2. 环境准备与安装
2.1 服务器规划
建议在两台独立的物理机或虚拟机上进行部署,避免单点故障。典型配置如下:
- 主节点:192.168.1.100
- 从节点:192.168.1.101
两台服务器应满足:
- 相同版本的Redis(推荐6.2+)
- 相同操作系统环境(建议Linux)
- 网络互通,防火墙开放6379端口
- 足够的磁盘空间(建议预留2倍内存大小的空间)
2.2 Redis安装
在两台服务器上执行以下步骤:
# 下载最新稳定版 wget https://download.redis.io/releases/redis-6.2.6.tar.gz tar xzf redis-6.2.6.tar.gz cd redis-6.2.6 # 编译安装 make make install # 创建配置目录和数据目录 mkdir -p /etc/redis /var/lib/redis3. 主节点配置
3.1 基础配置
编辑主节点的配置文件/etc/redis/redis.conf:
bind 192.168.1.100 port 6379 daemonize yes pidfile /var/run/redis_6379.pid logfile "/var/log/redis_6379.log" dir /var/lib/redis关键参数说明:
bind:指定监听的IP地址daemonize:以守护进程方式运行dir:持久化文件存储目录
3.2 持久化配置
建议同时启用RDB和AOF:
save 900 1 save 300 10 save 60 10000 appendonly yes appendfsync everysec4. 从节点配置
4.1 基础配置
编辑从节点的配置文件/etc/redis/redis.conf:
bind 192.168.1.101 port 6379 daemonize yes pidfile /var/run/redis_6379.pid logfile "/var/log/redis_6379.log" dir /var/lib/redis4.2 主从复制配置
在从节点配置文件中添加:
replicaof 192.168.1.100 6379 replica-read-only yes参数说明:
replicaof:指定主节点地址和端口replica-read-only:从节点只读模式
5. 启动与验证
5.1 启动服务
分别在两台服务器上启动Redis:
redis-server /etc/redis/redis.conf5.2 验证主从状态
在主节点执行:
redis-cli -h 192.168.1.100 info replication输出应包含:
role:master connected_slaves:1 slave0:ip=192.168.1.101,port=6379,state=online,offset=xxx,lag=0在从节点执行:
redis-cli -h 192.168.1.101 info replication输出应包含:
role:slave master_host:192.168.1.100 master_port:6379 master_link_status:up6. 数据同步测试
6.1 写入测试
在主节点执行:
redis-cli -h 192.168.1.100 set test_key "hello world"在从节点验证:
redis-cli -h 192.168.1.101 get test_key应返回"hello world"
6.2 同步延迟测试
可以通过以下命令监控复制延迟:
redis-cli -h 192.168.1.101 info replication | grep master_last_io_seconds_ago正常值应小于1秒
7. 故障处理与维护
7.1 主节点故障处理
当主节点宕机时,可以手动将从节点提升为新主节点:
- 在从节点执行:
redis-cli -h 192.168.1.101 replicaof no one修改应用配置,将写请求指向新主节点
原主节点恢复后,可以将其配置为新主节点的从节点
7.2 复制中断处理
常见问题及解决方法:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 从节点显示master_link_status:down | 网络不通 | 检查防火墙和网络连接 |
| 复制延迟持续增大 | 主节点写入压力大 | 优化主节点或增加从节点 |
| 从节点数据不一致 | 复制积压缓冲区不足 | 增大repl-backlog-size |
8. 性能优化建议
8.1 参数调优
在主节点配置文件中添加:
repl-backlog-size 128mb repl-backlog-ttl 3600 client-output-buffer-limit replica 256mb 64mb 608.2 监控配置
建议部署Redis监控工具,监控以下关键指标:
- 主从连接状态
- 复制延迟
- 内存使用情况
- 持久化状态
可以使用redis-cli info命令或第三方监控工具如Prometheus+Redis exporter
9. 安全加固措施
9.1 认证配置
在主从节点配置文件中添加:
requirepass your_strong_password masterauth your_strong_password9.2 网络隔离
建议将Redis服务部署在内网,并通过防火墙限制访问:
# 只允许主从节点间通信 iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.100 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.101 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -j DROP10. 日常维护建议
- 定期检查主从同步状态
- 监控复制延迟和网络状况
- 定期备份持久化文件
- 保持Redis版本更新
- 定期进行故障转移演练
重要提示:在生产环境中,建议至少部署一主两从来提高可用性。当单个从节点故障时,仍有另一个从节点可以接管服务。