1. 前置准备:资产与权限清单
- 建立清单:列出所有 VPS 实例(IP、机房、操作系统、用途、负责人)。
- 权限验证:确认运维账户可以 SSH 登录、控制面板 API(例如提供商控制台)有 token。执行:ssh -i ~/.ssh/id_rsa user@IP,验证 sudo 权限并记录 sudoers。
- 通信通道:设定演练通知群、电话链、故障工单模板和应急联系人表。
2. 监控与告警核查
- 指标确认:确保有主机监控(CPU、内存、磁盘、网络)、应用探针、端口/服务健康检查。
- 常用命令:top/htop、free -m、df -h、iostat -x 1 3、ss -tunlp。
- 日志收集:确认 rsyslog/journal 或集中化 ELK/Prometheus 已就绪,测试日志能在 15 分钟内检索到。
3. 网络故障排查步骤
- 验证连通性:ping IP,traceroute -n IP 或 mtr -rw IP,判断是机房内部网络还是公网链路问题。
- 端口与服务:nc -zv IP 端口 / ss -tunlp 查看监听情况。使用 tcpdump -i eth0 port 22 -w /tmp/ssh.pcap 抓包分析。
- DNS 问题:dig A 域名 @8.8.8.8 与 dig +trace,检查 TTL、解析是否到台湾机房的 IP。
4. 存储与磁盘故障排查
- 磁盘健康:lsblk、smartctl -a /dev/sdX(若支持),查看 I/O 等待 iostat。
- 文件系统:df -h、mount、du -sh /var/log;如只读 remount -o remount,rw /mnt 或检查 dmesg / journalctl。对 LVM 使用 lvscan、vgchange -ay,必要时 fsck -y /dev/mapper/vg-lv(在单用户模式)。
- 快照与还原:确认云厂商快照可用,用快照创建临时实例验证一致性。
5. 应用与服务层快速恢复流程
- 服务重启:systemctl restart 服务;查看 journalctl -u 服务 -n 200。
- 回滚部署:使用版本化发布(git tag / artifact),若新部署导致故障,回滚到上一个稳定版本并验证接口。
- 数据一致性:对数据库采用只读检查点,使用 mysqldump 或 xtrabackup 恢复验证;对分布式服务检查 cluster status(如 etcdctl endpoint status)。
6. 容灾演练(演习)标准化步骤
- 制定目标:明确 RTO(目标恢复时间)与 RPO(最大数据丢失)。
- 演练剧本:准备剧本(断链路、整机宕机、数据损坏),逐步写出触发条件、负责人、回滚阈值。
- 执行流程:1) 预演通知;2) 按剧本执行故障注入(例如在控制台断开网络或关机);3) 依 runbook 执行切换(浮动 IP/负载均衡、DNS 切换、从备机提升);4) 验证业务烟雾测试;5) 记录耗时与问题,召集事后复盘。
7. 问1:如何在台湾机房进行跨机房故障切换?
答1:
- 建议先配置多活或主备:主备通过 rsync/replication 保证数据同步,使用 Floating IP 或云厂商的 BGP/VRR 做 IP 漂移。
- 切换步骤:1) 将流量切到备用 LB(调整 DNS TTL 至低值 60s);2) 在备用机上确认服务与数据一致(数据库延迟在可接受范围);3) 更新监控告警与运维面板;4) 完成后提升 DNS TTL 并记录切换时间与影响。
8. 问2:演练中如何保证不影响线上用户?
答2:
- 在非高峰窗口进行演练并提前通知;采用灰度或分段流量切换(先切少量流量到备用);使用流量镜像与沙盒环境验证步骤;对关键数据采用快照或只读副本进行验证,避免对主库写入操作。
9. 问3:演练后的复盘与改进要点有哪些?
答3:
- 复盘要点:记录实际 RTO/RPO、遇到的阻碍、自动化缺口、权限或文档不足。形成行动清单(Who/When/What),优先实现自动化脚本(切换、回滚、验证)、完善监控告警并再次演练确认改进有效。
来源:从运维角度管理台湾机房 vps的故障排查与容灾演练实践指南