4. 演练环境与生产环境隔离
Redis 生产故障演练最大的风险,不是演练本身失败,而是演练动作意外触达真实生产数据或真实业务流量。因此,演练环境与生产环境的隔离不是“另起一套 Redis”这么简单,它需要同时解决四个问题:结构对齐(影子集群要能复现生产拓扑与参数)、流量可控(回放的是脱敏后的真实请求模式,而非真实写入)、数据安全(敏感字段不可逆脱敏)、边界清晰(网络、权限、命令、监控四条边界都要能阻断误操作)。本节围绕这四点展开,并给出一套可落地的隔离方案。
一、影子集群:对齐拓扑,而不是对齐数据量
影子集群的目标是“结构等价、规模可缩”。生产若是 3 主 3 从 + 3 哨兵,影子集群应保持相同的角色比例与分片数,但节点规格可以降一档,例如生产 8C16G、影子 4C8G。这样做的原因是:故障演练关注的是主从切换、槽位迁移、哨兵选举、连接重连等行为路径,而不是吞吐极限。若影子集群用单节点替代集群,主从切换、MOVED/ASK 重定向、集群总线通信等关键路径根本无法复现,演练结论会失真。
搭建时建议用容器或独立命名空间部署,节点命名带 shadow- 前缀,端口与生产错开(如生产 7000-7005,影子 17000-17005)。关键参数必须与生产对齐,包括 maxmemory-policy、appendonly、save、cluster-node-timeout、repl-backlog-size。这些参数直接决定淘汰行为、持久化时机和故障判定速度,是演练结论能否外推到生产的核心变量。
二、流量回放:录制请求模式,而非复制数据
流量回放的价值在于让影子集群承受与生产相似的命令分布、key 访问倾斜和 QPS 波形。推荐做法是从生产代理层(如 Redis Proxy、Twemproxy 或自研网关)旁路采集命令日志,只记录 命令类型 + key 哈希 + 参数长度 + 时间戳,不记录原始 value。回放时用工具按原始时间间隔重放,key 用哈希前缀映射到影子集群的独立命名空间,例如 shadow:{hash}。
回放必须做写命令降级:生产上的 SET、DEL、EXPIRE 在影子环境可转为 SET 到影子 key、DEL 影子 key,但绝不能携带真实业务 value。对于 FLUSHALL、KEYS *、CONFIG SET 等高风险命令,回放器应直接拦截并记录,不发送到影子集群,避免演练环境自身被污染。
三、数据脱敏:不可逆映射 + 格式保持
脱敏的核心原则是不可逆、格式一致、关联可复现。手机号、身份证、邮箱、订单号等字段,用 HMAC-SHA256 加盐后截取定长,再按原格式拼接。例如手机号 13812345678,盐值固定,取哈希前 8 位映射为 139xxxxxxxx 形式,保证仍是 11 位数字、仍以 1 开头,业务代码的格式校验不会失败。同一原始值在同一盐值下必须映射到同一脱敏值,这样关联查询、去重、排序等逻辑在影子环境仍然成立。
脱敏应在数据进入影子集群之前完成,而不是在影子集群内部做。推荐链路是:生产 RDB/AOF → 离线脱敏管道 → 影子集群加载。脱敏管道要保留 TTL、数据类型和 key 的哈希分布,只替换 value 中的敏感部分。对于 Hash、ZSet、List 等复合类型,逐字段处理,保持元素数量与顺序不变。
四、配置对齐与安全边界控制
配置对齐不是“抄一份 redis.conf”,而是建立参数基线表,逐项标注“必须一致 / 允许差异 / 禁止携带”。必须一致的包括持久化策略、淘汰策略、集群超时、慢查询阈值;允许差异的包括 maxmemory、bind、requirepass、日志级别;禁止携带的包括生产密码、生产 AOF 文件、生产节点 IP 白名单。
安全边界要同时控制四条线:网络边界——影子集群部署在独立 VPC 或 VLAN,安全组只允许演练跳板机访问,禁止与生产网段互通;权限边界——影子集群使用独立 ACL 用户,禁用 FLUSHALL、CONFIG、SHUTDOWN 等命令,或通过 rename-command 重命名;命令边界——回放器与演练脚本内置命令白名单,高危命令直接拒绝;监控边界——影子集群的告警只发到演练群,不接入生产值班通道,避免误告警干扰真实故障响应。
五、一个可执行的隔离检查清单
演练开始前,建议逐项确认以下内容,任一项不满足则暂停演练:影子集群节点数与角色比例与生产一致;cluster-node-timeout、maxmemory-policy、appendonly 三项参数与生产一致;回放器已启用命令白名单且拦截日志可查;脱敏管道对手机号、身份证、邮箱三类字段的映射结果已抽样验证格式正确;影子集群安全组未放通生产网段;ACL 用户已禁用 CONFIG、SHUTDOWN、FLUSHALL;监控告警接收人仅为演练小组。
完成上述隔离后,影子集群才具备承接故障演练的资格。此时可以安全地执行主从切换、节点宕机、网络分区、慢查询注入等动作,观察哨兵选举时间、客户端重连行为、数据一致性表现,而无需担心影响真实业务。隔离做得越彻底,演练结论越可信,恢复工程的可复现性也越强。