从 Redis 4 升级到 Redis 8:基于 Ansible 构建三主三从集群 + RedisShake 实时同步实战全记录
- 技术栈:Redis / Ansible / RedisShake / Prometheus
- 系统环境:原集群 CentOS 7 + Redis 4.0.9,新集群 Rocky 9.6 + Redis 8.0.1
- 部署方式:Ansible 自动化 + RedisShake 数据同步 + redis-exporter 监控接入
项目背景
随着业务数据量快速增长,我们的 Redis 4.0.9 单机部署已难以支撑高并发读写和实时同步需求。为了提升可用性和扩展性,我们决定:
部署全新的 Redis 8.0.1 三主三从集群
使用Ansible Playbook 实现自动化部署运维
借助RedisShake 工具完成 Redis 4 到 Redis 8 的实时同步
接入Prometheus + Grafana 监控体系,接入 redis-exporter
技术架构预览
新集群部署:三主三从 Redis 架构
部署工具:Ansible 自动化
我们使用 Ansible 编排 Redis 安装、配置、服务管理等流程,兼顾部署速度与一致性。Playbook 支持以下功能:
- 初始化 Rocky Linux 9.6 系统环境
- 自动安装 Redis 8.0.1
- 生成 redis.conf 和 sentinel.conf(可拓展)
- 自定义启动/停止脚本
- 批量查看集群状态
项目目录结构如下:
部署命令一键完成:
ansible-playbook -i inventory.ini redis_cluster_optimize.yml实时同步:RedisShake 打通新老集群
为什么选 RedisShake?
- 支持 Redis 到 Redis 的**全量 + 增量**同步
- 兼容 Redis 4.0.9 到 8.0.1
- 易于部署,日志清晰,支持断点续传
RedisShake 配置核心参数:
启动同步
nohup /usr/local/bin/redis-shake /usr/local/etc/shake.toml > /var/log/redis-shake.log 2>&1 &支持实时监控进度、同步速率、失败重试等功能
已完成 27GB 数据的无中断迁移!
监控体系集成:redis-exporter + Prometheus
为确保新集群的稳定运行,我们接入了 Prometheus 监控系统,并通过 redis-exporter 暴露 Redis 各项指标。
安装 redis-exporter(K8s or 二进制部署均支持)
核心监控项包括:
- 内存使用率 / key 数量增长趋势
- 主从延迟
- 命中率 / 慢查询统计
- 同步状态(复制/断开)
集群验证 & 启停脚本管理
集群状态查看脚本(支持多主多从)
启停脚本示例:
# 启动所有redis
bash scripts/start_all_redis.sh
# 停止所有redis
bash scripts/status_all_redis.sh
# 查看redis状态
bash scripts/stop_all_redis.sh
项目成果总结
附录:实践建议
1. Redis 8 推荐配置开启 lazyfree-lazy-eviction 提升删除效率
2. RedisShake 在初次同步 5GB+ 数据时建议禁用 AOF 提升吞吐
3. 如果原集群开启了密码,需要确保 requirepass 在目标 Redis 同步前设置一致
4. 监控部署建议结合报警规则,及时通知主从断连、内存飙升等情况
实践画面速览
- 架构图
- Ansible 执行画面
- RedisShake 同步日志
- redis-exporter + Grafana 面板展示
尾声
这次 Redis 8 集群升级项目,基于 Ansible、RedisShake、Prometheus 的组合,不仅完成了高效迁移,也为后续自动运维和容量扩展打下了坚实基础。
你是否也在面临 Redis 升级困境?欢迎留言交流你们的最佳实践,或者来找我们一起搞事情!
收藏 + 关注 + 点赞,就是对我们最大的支持!
