1. Redis主从架构基础认知
Redis主从复制(Replication)是构建高可用Redis服务的基础架构模式。在实际生产环境中,我通常会采用一主多从的部署方式。主节点(Master)负责处理所有写操作,而从节点(Slave)则通过异步复制机制同步主节点数据,主要承担读请求的负载均衡。
主从架构的核心价值体现在三个方面:
- 数据冗余:实现数据的多节点备份
- 读写分离:提升系统整体吞吐量
- 故障恢复:为后续的高可用方案奠定基础
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与安装部署
2.1 系统环境配置
建议准备至少3台服务器(物理机或虚拟机),配置建议:
- 操作系统:CentOS 7+
- 内存:≥4GB
- 磁盘:≥20GB
网络配置示例:
bash复制# 主节点
hostname master
IP 192.168.1.100
# 从节点1
hostname slave1
IP 192.168.1.101
# 从节点2
hostname slave2
IP 192.168.1.102
2.2 Redis安装步骤
- 下载最新稳定版(当前为7.0.3):
bash复制wget http://download.redis.io/releases/redis-7.0.3.tar.gz
- 编译安装:
bash复制tar -xzf redis-7.0.3.tar.gz
cd redis-7.0.3
make && make install
- 创建专用用户:
bash复制useradd -s /sbin/nologin redis
mkdir -p /usr/local/redis/{data,logs}
chown -R redis:redis /usr/local/redis
3. 主从配置详解
3.1 主节点配置
编辑/usr/local/redis/redis.conf:
ini复制bind 192.168.1.100
port 6379
daemonize yes
logfile "/usr/local/redis/logs/redis.log"
dir /usr/local/redis/data
requirepass MasterPass123
appendonly yes
appendfsync everysec
关键参数说明:
requirepass:主节点访问密码appendonly:开启AOF持久化appendfsync:持久化策略
3.2 从节点配置
slave1配置示例:
ini复制bind 192.168.1.101
replicaof 192.168.1.100 6379
masterauth MasterPass123
replica-read-only yes
slave2配置类似,只需修改bind地址。
4. 服务管理优化
4.1 Systemd服务配置
创建/etc/systemd/system/redis.service:
ini复制[Unit]
Description=Redis Server
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
启用服务:
bash复制systemctl daemon-reload
systemctl enable redis
4.2 内核参数优化
调整内存分配策略:
bash复制echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
sysctl -p
5. 主从状态验证
5.1 查看复制状态
在主节点执行:
bash复制redis-cli -h 192.168.1.100 -a MasterPass123 info replication
预期输出应包含:
code复制role:master
connected_slaves:2
slave0:ip=192.168.1.101,port=6379,state=online
slave1:ip=192.168.1.102,port=6379,state=online
5.2 数据同步测试
- 主节点写入数据:
bash复制redis-cli -h 192.168.1.100 -a MasterPass123 set test_key "hello"
- 从节点查询验证:
bash复制redis-cli -h 192.168.1.101 -a MasterPass123 get test_key
6. 生产环境注意事项
6.1 网络延迟优化
当主从节点跨机房部署时:
- 适当增大
repl-timeout(默认60秒) - 调整
repl-backlog-size(默认1MB)
6.2 安全加固建议
- 启用防火墙规则:
bash复制firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload
- 定期轮换认证密码
6.3 监控指标
关键监控项包括:
- 复制延迟(
master_repl_offset与slave_repl_offset差值) - 连接状态(
master_link_status) - 同步状态(
sync_full/sync_partial)
7. 常见问题排查
7.1 同步失败处理
当出现同步中断时:
- 检查网络连通性
- 验证认证密码
- 查看日志定位问题:
bash复制tail -f /usr/local/redis/logs/redis.log
7.2 主从切换演练
模拟主节点故障:
bash复制# 在主节点执行
redis-cli -h 192.168.1.100 -a MasterPass123 debug segfault
观察从节点自动重连机制。
8. 性能调优建议
-
适当调整
repl-disable-tcp-nodelay:- 开启(yes):减少带宽但增加延迟
- 关闭(no):降低延迟但增加带宽
-
合理设置
client-output-buffer-limit:
ini复制client-output-buffer-limit replica 256mb 64mb 60
- 对于写密集型场景,建议:
- 增加从节点数量分担读压力
- 考虑使用Redis Cluster方案
通过以上配置,您可以构建一个稳定可靠的Redis主从架构。在实际运维中,建议定期进行故障演练,确保系统的高可用性。
