全自动容灾推演脚本必须运行于隔离沙箱、操作可逆无副作用、输出结构化度量结果;分拉取备份、虚拟恢复、度量采集、清理归档四阶段,每阶段失败自动中止并留痕;通过专用用户dr-runner与wrapper.sh校验环境后定时执行,严控磁盘、超时、路径及日志规范。

明确沙箱环境与容灾推演的核心约束
全自动容灾推演脚本不是通用备份恢复脚本的简单复用,它必须满足三个硬性前提:一是运行在隔离沙箱(非生产网络、无真实业务流量);二是所有操作必须可逆、无副作用(如不修改源备份索引、不覆盖原备份库);三是虚拟恢复度量需输出结构化结果(RTO/RPO偏差、关键服务启动耗时、校验通过率等)。因此脚本开头必须做环境自检——检查沙箱标识文件(如/etc/sandbox.flag)、确认备份存储挂载点只读、验证虚拟化平台API Token有效期。
分阶段构建可调度的推演流水线
把一次推演拆为四个原子阶段,每阶段失败自动中止并记录快照日志:
- 拉取备份:用备份系统API(如Commvault REST或Veeam PowerShell Module)按策略标签(如tag:dr-test-2024q3)查最新全量+增量链,下载至沙箱本地缓存区(如/sandbox/backup_cache/),跳过加密密钥解密步骤(沙箱用预置测试密钥)
- 虚拟恢复:调用vCenter或Proxmox API创建临时VM(命名含时间戳和哈希,如dr-test-20240520-7f3a),从缓存加载备份镜像,仅启用必需网卡(绑定沙箱内部vSwitch),禁用cloud-init和主机名自动注册
- 度量采集:在恢复VM内注入轻量探测Agent(Python脚本),检测SSH可达性、数据库端口响应、应用健康接口返回码,记录各环节时间戳到共享日志卷
- 清理归档:强制销毁VM、卸载缓存目录、压缩本次日志为dr-metric-20240520.tar.gz并上传至S3归档桶(路径含沙箱ID)
用Cron+Wrapper实现安全定时执行
避免直接用root cron跑高危操作。推荐方案:
- 新建专用用户dr-runner,限制其仅能执行/opt/dr-orchestration/run.sh
- Cron条目写为:0 2 * * 1 /opt/dr-orchestration/wrapper.sh >> /var/log/dr-cron.log 2>&1(每周一凌晨2点)
- wrapper.sh先校验当前是否为沙箱环境(读取/proc/sys/kernel/hostname匹配sandbox-前缀),再用sudo -u dr-runner 执行主脚本,最后发送企业微信通知(含本次RTO实测值)
关键细节决定成败
这些地方容易踩坑,必须硬编码防护:
- 备份拉取时加--max-download-size 500G参数,防沙箱磁盘爆满
- 虚拟恢复阶段设置超时熔断:timeout 1800s vm-deploy.py(30分钟未完成则强杀)
- 度量脚本必须用绝对路径调用curl/wget(避免沙箱PATH污染导致命令找不到)
- 所有日志写入前追加[DR-TEST]前缀,方便ELK统一过滤

















