目标:在主机或主线路不可用时,把网站/服务在24小时内切换到香港VPS,保证静态/部分动态内容可用并接收最低限度的业务。准备项:备用VPS账号、域名控制面板或Cloudflare/API权限、备份脚本、基本监控与证书。
建议:选有香港节点、带宽保证且开通快、能按小时计费的供应商(如Vultr HK、Linode HK或国内可用的香港云服务商)。规格:1-2核、2-4GB内存、50GB SSD、1Gbps共享带宽,流量按需考虑。确认开放SSH、HTTP(S)端口并支持快照/快备。
步骤:注册并完成实名认证→创建实例(选择Ubuntu 22.04)→记录公网IP与控制面板API Key。提前配置SSH密钥:本地执行 ssh-keygen -t rsa,然后在VPS控制面板粘贴公钥以启用密钥登录,避免密码登录风险。
通过SSH登录后执行:sudo apt update && sudo apt upgrade -y;创建用户:sudo adduser deploy && sudo usermod -aG sudo deploy;关闭root远程登录并启用ufw:sudo ufw allow OpenSSH; sudo ufw allow 80; sudo ufw allow 443; sudo ufw enable。安装常用工具:sudo apt install nginx certbot git rsync mysql-client -y。
部署Nginx为反向代理/静态服务器:在 /etc/nginx/sites-available/ 创建配置,示例关键项:设置root到/var/www/html、启用gzip、配置fastcgi_cache缓存静态与动态页面。示例cache配置(简化)放在location中:fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=MYCACHE:10m inactive=60m;,能缓解高峰压力。
准备好主服务器定时同步脚本,示例命令:rsync -azP --delete -e "ssh -i /path/to/key" /var/www/html/ deploy@HK_IP:/var/www/html/。在主服务器crontab设置每5-15分钟同步:*/5 * * * * /usr/bin/rsync ...,确保VPS上内容为最新。若主机离线,提前执行一次完整同步并保留快照。
对于一天应急,推荐导出最新只读数据并导入到VPS上的轻量DB。主库导出:mysqldump -u root -p --single-transaction --quick dbname > dump.sql,传到VPS后导入:mysql -u root -p dbname < dump.sql。若写操作必须保留,建议允许部分非核心写入或使用临时队列记录到文件,待主库恢复后统一回写。
提前把域名A记录的TTL设置成短(例如300秒)至少在事件前24小时完成。提供Cloudflare切换示例(使用API):将A记录指向HK_IP的curl命令:curl -X PUT "https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{record_id}" -H "X-Auth-Email:you@example.com" -H "X-Auth-Key:API_KEY" -H "Content-Type:application/json" --data '{"type":"A","name":"example.com","content":"HK_IP","ttl":300,"proxied":false}'。若无API,手动在域名面板修改A记录并等待TTL生效。
使用Certbot在HK VPS上申请证书:sudo certbot --nginx -d example.com(需域名指向或使用DNS验证)。邮件建议使用外部SMTP服务(SendGrid/SMTP2Go)做中继,避免本机做主发信,减少黑名单风险。注意防火墙、fail2ban,限制SSH登录来源并启用UFW。
答:最快的做法是事先把DNS TTL调短(如300秒),并准备好API脚本(例如Cloudflare或域名服务商的API)用于一键替换A记录到香港VPS IP。操作步骤:1) 事件前24小时把TTL调短;2) 在VPS上完成内容与证书准备并测试;3) 发生断网时执行API脚本或在面板修改A记录;4) 监控解析传播(dig或nslookup),确认用户解析到HK_IP后关闭主服相关流量。
答:因为是临时一天应急,优先保证读可用。操作建议:1) 在切换前做一次全量mysqldump并导入到VPS;2) 如果需要写操作,开启写队列(将写请求写入本地日志文件或队列,由恢复后脚本批量回放);3) 事件结束后,从VPS导出日志/增量并合并回主库,验证事务顺序并恢复正常服务。
答:手动测试步骤:1) 在本地hosts文件(/etc/hosts)中把域名指向HK_IP,模拟切换并访问,验证页面、登录和表单;2) 当确认无误后在域名面板修改A记录并等待TTL;3) 回退同理:把域名面板A记录改回主站IP或恢复原TTL;4) 建议切换前备份当前DNS设置截图,切换后持续监控48小时以捕捉问题。