1.
迁移前的评估与准备
- 清点服务组件:Web、应用、数据库、缓存、队列、定时任务、证书、IP白名单。
- 在台湾VPS上预配资源:选CPU/内存/带宽、操作系统版本、磁盘IO、快照功能。建议预留比现网高10%-30%资源。
- 记录依赖:第三方API回国线路、地区限制、时区、NTP、邮件服务(SPF/DKIM)。
2.
网络与安全设置
- 在VPS上创建账号,配置SSH key,并禁用密码登录(/etc/ssh/sshd_config)。
- 配置防火墙(ufw或iptables):仅开放必要端口(22/80/443/应用端口),并限制SSH来源IP。
- 申请并配置浮动IP或保留IP(如提供商支持),便于切换时保持不频繁更改记录。
3.
环境搭建与依赖安装
- 在台湾VPS上安装相同版本的运行时(如Python/Node/JDK)、Web服务器(nginx/apache)、数据库(MySQL/Postgres)。
- 使用配置管理工具(Ansible/Chef)或编写脚本来保证配置一致性。
- 同步时区与NTP,确保日志时间一致:timedatectl set-timezone。
4.
数据同步(文件与静态资源)
- 首次全量:使用rsync增量拷贝(rsync -azP --delete /var/www/ user@taiwan:/var/www/)。
- 大文件或海量小文件可先用打包传输(tar -> scp -> 解包),或使用S3/对象存储做中转。
- 设置定期增量同步:在源端临近切换前每10-30分钟执行一次rsync,缩小差异窗口。
5.
数据库迁移与一致性
- 小库:执行mysqldump --single-transaction --master-data=2 > dump.sql,传到新库并导入。
- 大库或要求零宕机:配置主从复制,先将
台湾VPS配置为从节点,等待同步完成后进行故障切换为主。
- 切换时刻:先冻结写入(应用只读或队列暂停),确保binlog同步到目标,再切换写入指向台湾VPS。
6.
SSL证书与域名配置
- 在新VPS上用certbot或ACME申请证书(若使用CDN,优先在CDN端配置)。
- 迁移前将域名TTL降为较短(如300秒)至少提前24-48小时,以便切换时快速生效。
- 配置nginx反向代理、HTTP->HTTPS重定向,并验证证书链及OCSP。
7.
切换流程与流量引导
- 切换步骤:a) 进入维护窗口,停止外部写入 b) 执行最后一次rsync并锁库导出 c) 修改DNS指向台湾VPSIP或更新负载均衡器后端 d) 逐步恢复写入并监控。
- 若使用负载均衡或Anycast/CDN,优先在LB层做流量迁移以降低DNS等待风险。
8.
测试、监控与回退策略
- 切换后立即验证:页面响应、数据库读写、第三方API、邮件发送、日志无错误。使用curl、mtr、tcpdump做链路与延迟检查。
- 监控:部署Prometheus/Grafana或云监控告警CPU、内存、连接数、响应时间、错误率。
- 回退:保持源站功能不下线,DNS TTL 在低值窗口内可迅速回拨,或在LB层移回原节点。
9.
常见问题问答
问:如何最小化切换时间窗口? 答:提前把大部分数据同步并配置数据库复制,切换时仅做最后的binlog同步和短暂写入冻结,DNS TTL提前降到300或使用LB实现秒级切换。
10.
常见问题问答
问:SSL证书如何平滑迁移? 答:在新VPS上提前申请证书或导入现有证书,若使用CDN可在CDN端配置证书并在切换时保持HTTPS无缝。
11.
常见问题问答
问:遇到线路问题如何排查? 答:用ping、mtr/traceroute检查到台湾节点的延迟与丢包;用tcpdump抓包定位重传或MTU问题;必要时联系VPS提供商和上游ISP处理路由。
来源:迁移实践如何将海外服务平滑迁移到国外vps 台湾平台