分享首尔服务器 Redis 集群的运维实战,从部署架构到性能调优的完整指南。
Redis 是高性能内存数据库,集群模式可以水平扩展。本文分享首尔服务器 Redis 集群的运维实战。
集群架构 1) 模式选择:Cluster 模式(官方)或 Codis/代理模式 2) 节点数量:至少 6 节点(3 主 3 从),推荐 9 节点以上 3) 内存规划:每个实例 8-16G,避免大实例 4) 部署方式:物理机或容器,建议物理机获得更好性能 5) 跨可用区:主从分布在不同 AZ
部署步骤 1) 安装 Redis 6.2+,开启 cluster-enabled 2) 配置 cluster-config-file、cluster-node-timeout 3) 用 redis-cli --cluster create 创建集群 4) 添加从节点:redis-cli --cluster add-node --slave 5) 验证:cluster info、cluster nodes
性能调优 1) 内存:maxmemory-policy 选择 allkeys-lru 或 volatile-lru 2) 持久化:AOF + RDB,根据业务权衡 3) 网络:tcp-backlog、tcp-keepalive 优化 4) 慢查询:slowlog-log-slower-than 监控 5) 大 Key:拆分大 Key,避免阻塞
内存优化 1) 数据结构:用 Hash 代替 String 存储对象 2) 压缩:开启 ziplist、listpack 3) 过期策略:合理设置 TTL 4) 内存碎片:activedefrag yes 5) 监控:info memory 看 used_memory、mem_fragmentation_ratio
高可用 1) 主从复制:异步复制,注意数据一致性 2) 自动故障转移:Cluster 模式自动 failover 3) 持久化:AOF 每秒 fsync,RDB 定期快照 4) 备份:定期 RDB 备份到异地 5) 监控:连接数、内存、QPS、延迟
常见问题 问题一:内存满了 表现:OOM,写入失败。 排查:info memory 看使用;bigkeys 找大 Key。 修复:设置 maxmemory;淘汰策略;拆分大 Key。
问题二:延迟突增 表现:响应突然变慢。 排查:slowlog 看慢查询;检查是否有大 Key 操作;看 fork 子进程。 修复:拆分大 Key;优化命令;调整持久化策略。
问题三:主从同步失败 表现:从节点数据不一致。 排查:看 replication 日志;检查网络;检查磁盘。 修复:修复网络;重做全量同步;优化磁盘。
问题四:集群脑裂 表现:两个 master 都提供服务。 排查:检查网络分区;cluster-state。 修复:恢复网络;手动处理冲突;增加节点。
问题五:迁移阻塞 表现:reshard 时服务卡顿。 排查:大 Key 迁移慢;网络带宽不足。 修复:分批迁移;增加带宽;低峰期操作。
生产经验 1) 不要超过 16G 单实例 2) 避免大 Key(>10KB) 3) AOF + RDB 都开 4) 监控要全面 5) 定期演练故障转移