1. 演练前的准备与清单
- 确认演练目标:是否为全站切换、数据库故障、或单节点恢复。
- 准备清单:主/备高防云服务器实例、浮动IP或弹性IP、负载均衡配置、DNS管理权限、备份快照权限、监控告警接入。
- 工具与账号:SSH密钥、运维账号、控制台API密钥、数据库管理员账号、运维脚本存放路径。
2. 环境搭建与网络规划
- 在新加坡区域创建至少两台高防云服务器(主、备),配置相同镜像与安全组。示例:10.0.0.10(主)、10.0.1.10(备)。
- 配置浮动IP(Elastic IP)并测试可在实例间快速重绑定。
- 在安全组打开必要端口:TCP 22/80/443,数据库端口(如3306),以及健康检查端口。
3. 数据层备份与实时复制
- 全量备份:使用mysqldump或pg_dump导出快照并上传到对象存储(示例:mysqldump -u root -p --all-databases > dump.sql && aws s3 cp dump.sql s3://bucket/)。
- 增量复制:配置主从复制(MySQL):在主库开启binlog,创建复制账号;在备库执行 CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='xxx', MASTER_LOG_POS=xxx;启动 slave。
- 文件同步:对文件型数据使用rsync:rsync -azP /var/www/ 备机:/var/www/,并用cron或inotify持续同步。
4. 应用层与会话保持策略
- 使用负载均衡器(如HAProxy/Nginx或云厂商LB)做健康检查,设置后端主备权重。
- 会话设计:尽量使用无状态服务或Redis会话共享,若使用本地会话,确保文件/会话目录同步或切换时通知客户端失效。
- 配置keepalive与超时以避免切换瞬间过多连接丢失。
5. 故障切换(演练动作)详细步骤
- 步骤1(缩短TTL):在DNS控制台将业务域名TTL设置为30秒-60秒,等待生效。
- 步骤2(人为切主):在预定时间内,从监控或运维台触发主机下线:sudo systemctl stop nginx mysqld(或在控制台断网)。
- 步骤3(重新绑定浮动IP):在控制台解绑浮动IP并绑定到备机,或修改负载均衡后端权重把流量切到备机。验证公网IP已切换。
- 步骤4(DNS验证):若使用DNS切换,修改A记录指向备机或负载均衡VIP,观察TTL内全网解析变更。
6. 校验与回归检查项
- 端到端验证:curl http(s) 请求检查响应码、页面内容及API返回。
- 数据一致性验证:对比主备数据库表行数、关键ID的最新时间戳,核对文件MD5或使用rsync --dry-run。
- 监控告警与日志:检查监控是否触发过多错误,查看 /var/log/ 及应用日志确认无异常堆栈。
7. 回滚与恢复流程
- 回滚策略一(回到原主):确认主机可恢复后,再次把浮动IP或负载均衡权重切回;如果DNS TTL短,修改A记录并等待解析回滚。
- 回滚策略二(主无法恢复):将备机提升为新主,确保binlog/GTID继续写入,重新建立原主为新从库的复制关系。
- 操作记录:所有变更用工单或变更记录工具记录时间、操作者、回滚点。
8. 演练后的审查与优化
- 撰写演练报告:列出成功点、失败点、时间线、延迟和客户影响。
- 优化建议:缩短RTO/RPO、增加多可用区备份、调整监控阈值、优化切换脚本实现一键化。
- 定期演练:建议每季度至少一次全流程演练,并在业务低峰时段进行。
9. 自动化脚本与示例命令
- 绑定浮动IP(伪代码):api_bind_fip --ip 1.2.3.4 --instance-id i-xxxx;解绑同理。
- 数据库检查脚本(示例):mysql -u repl -p -e "SHOW SLAVE STATUS\G" | grep -E "Slave_IO_Running|Slave_SQL_Running"。
- 健康检查脚本(示例):curl -sS --max-time 5 https://域名/health || echo "FAILED" >/tmp/health_fail
10. 常见问题一
问:演练切换时如何避免DNS缓存导致部分用户访问旧主?
11. 常见问题一 答
答:演练前把DNS TTL降到30-60秒并等待生效,使用浮动IP或负载均衡做IP层快速切换可以减少DNS依赖;同时在切换后监控不同地区解析情况,必要时通知客户刷新DNS或使用CDN回源策略。
12. 常见问题二
问:备机如何保证在切换时数据库没有丢失最新写入?答:使用异步复制有延迟,推荐使用半同步或主从双写策略,演练前确认binlog位置并在切换前完成最后一次增量同步;若允许短暂停写,可在切换窗口暂停写入,确认数据刷盘后切换。
来源:故障恢复演练演示新加坡高防云服务器租用的连续性保障能力