1.
准备阶段:明确目标与编写演练计划
1.1 明确目标:演练目标写明“模拟阿里云香港实例完全断网,验证跨区切换到备用机并恢复业务,DNS切换时限在10分钟内”。
1.2 列出资源:记录主机公网IP、内网IP、实例ID、负载均衡ID、域名(阿里云域名/第三方)、数据库主从配置、存储位置(OSS/本地)。
1.3 人员与权限:列出演练成员(SRE、DBA、网络、安全、值班经理)并确认每人拥有Aliyun控制台、SSH、DNS管理权限和工单权限(开通紧急工单)。
2.
演练前技术准备:搭建备用环境与数据同步
2.1 备用机部署:在其他可用区或区域(例如香港以外的新加坡或北京)预先部署与主服务相同版本的应用与环境,确保镜像与配置一致。
2.2 数据同步策略:静态文件放OSS并开启跨地域复制;数据库建立异地只读副本(RDS跨地域复制或MySQL主从),如果自建MySQL,设置binlog并配置从库:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='binlog.0000', MASTER_LOG_POS=xxxxx; START SLAVE;
2.3 同步校验:对比行数、文件哈希(md5sum)或使用rsync --checksum进行校验:rsync -avz --delete --checksum /data/ user@standby:/data/。
3.
DNS与流量控制准备:降低TTL并配置故障切换策略
3.1 TTL设置:演练前24小时将主域名A记录TTL降到60秒或更低,保障切换迅速生效。
3.2 DNS方案:使用阿里云DNS(Alidns)或DNSPod的健康检查+故障切换功能,或者准备好手动修改A记录的步骤与备用IP列表。
3.3 测试DNS:本地用dig或nslookup验证TTL与解析:dig @8.8.8.8 your.domain +short;确认DNS缓存策略、CDN回源配置是否影响切换。
4.
演练操作步骤(断线发生时的应急执行)
4.1 侦测与确认:收到监控告警后,执行ping/SSH/console登录确认:ssh -i key root@主机IP;若SSH超时,使用控制台查看实例状态与网络状态。
4.2 报告与升级:值班人员在30分钟内通过电话/SMS/群组通知SRE、DBA并在工单系统中创建紧急工单,标注影响范围与优先级。
4.3 切换流量到备用:如果使用DNS切换,立即在阿里云DNS控制台将域名A记录改为备用机IP并保存;若使用SLB/GA,调整后端服务器池,将备用机加入并移除故障实例。
4.4 验证业务:通过curl或浏览器访问域名并在多地点(本地、海外)验证:curl -I https://your.domain --resolve your.domain:443:备用IP;确认页面返回正常并检查日志。
5.
数据一致性与数据库故障切换
5.1 确认延迟:查看从库延迟SHOW SLAVE STATUS\G 中 Seconds_Behind_Master;若延迟在可接受范围内,考虑提升从库为主库。
5.2 主库故障提升步骤(MySQL自建示例):
(1) 在备用从库上停止slave:STOP SLAVE;
(2) PROMOTE:编辑配置为读写,解锁复制用户权限,更新应用DB连接字符串指向新主库;
(3) 验证应用连接并触发写入测试。
5.3 应用配置切换:如果应用使用配置中心或环境变量,确保配置变更能在滚动重启中生效:systemctl restart app 或 docker service update。
6.
演练后的回滚、总结与SOP更新
6.1 回滚条件:主机恢复网络后,先在非高峰时间验证原主机数据完整并与备机对比,确认无数据丢失再回流量。
6.2 回流步骤:先将主库与当前主进行数据同步(或先导出增量binlog并应用),再把DNS/SLB指向原主并观察48小时。
6.3 演练总结:记录发生时间、切换耗时、失误点、改进措施(如缩短DNS TTL、优化自动化Playbook),并将Runbook(SOP)更新到知识库,安排复盘会议。
7.
演练前的安全与风险控制小分段
7.1 仅在演练窗口或演练环境实施断网模拟,避免直接在生产环境人为断网。
7.2 拟定回退计划和联系人名单,演练前备份关键配置与证书。
7.3 对演练操作进行审批,所有敏感命令记录在Change Log。
8.
演练操作中常用命令与检查项(小分段)
8.1 网络与连通性检查:ping、traceroute、telnet port、curl -v。
8.2 服务与进程:systemctl status nginx/mysql;docker ps / kubectl get pods。
8.3 日志检查:tail -n 200 /var/log/nginx/access.log;检查应用错误日志并同步到中央日志系统。
9.
第一组问答 — 问:演练能否直接在生产环境切断阿里云香港机房网络?
9.1 答:不建议直接在生产环境做“切断”操作。应在预先准备的演练窗口或沙箱/演练环境中模拟断线,生产演练若必须进行需严格审批、低流量时段操作并建立回退通道。
10.
第二组问答 — 问:DNS切换后为什么有时仍看到旧IP解析?
10.1 答:主要原因是DNS缓存与TTL设置。即使将阿里云DNS的TTL设为60s,也可能因为ISP或本地DNS缓存旧记录。演练时应先降低TTL并等待TTL过期时间后再切换,必要时使用负载均衡/Global Accelerator降低切换风险。
11.
第三组问答 — 问:如何保证数据在跨区域切换时不丢失?
11.1 答:采用异地实时或近实时复制(RDS跨地域复制或MySQL主从+binlog)、静态文件放OSS并启用跨地域复制,并在切换前检查从库延迟与哈希校验。如需严格零丢失,考虑使用同步复制或分布式数据库解决方案。
来源:定期演练演示在阿里云香港服务器断线情况下的应急预案