1.1 明确目标:业务需低延迟访问台湾用户,容灾需跨可用区与本地机房。1.2 资源清单:台湾VPS(具原生公网IP)、物理机(机房内)、公有云账户(AWS/Azure/GCP)、域名与DNS服务(支持GeoDNS/健康检查)、备份与监控方案。1.3 准备凭证:各主机SSH密钥、API Key、管理员账号。
2.1 台湾VPS使用原生公网IP用于地理路由和用户直连,确保WHOIS、PTR、反垃圾/白名单检查通过。2.2 公有云使用弹性IP(Elastic IP)做入口负载,物理机通过机房公网或专线接入。2.3 设计CIDR和路由表:避免冲突(例如私有网段统一用10.10.x.x),规划BGP或静态路由。
3.1 在每台节点(台湾VPS、物理机、公有云跳板)安装WireGuard。示例安装(Ubuntu):sudo apt update && sudo apt install wireguard -y。3.2 生成密钥:wg genkey | tee private.key | wg pubkey > public.key。3.3 配置示例(/etc/wireguard/wg0.conf): [Interface] Address = 10.200.0.1/24 PrivateKey = <私钥> ListenPort = 51820 [Peer] PublicKey = <对端公钥> AllowedIPs = 10.200.0.2/32 Endpoint = x.x.x.x:51820 3.4 启动并设置自启动:sudo systemctl enable wg-quick@wg0 && sudo systemctl start wg-quick@wg0。3.5 验证:wg show、ping 10.200.0.2。
4.1 在各接入点部署NGINX为反向代理,公有云部署全局LB做公网入口。4.2 NGINX upstream配置示例: upstream backend { server 10.200.0.10:80; # 台湾VPS server 10.200.1.10:80; # 物理机 server 10.200.2.10:80; # 云主机 } 4.3 健康检查:利用NGINX或云LB的HTTP健康检查路径(/health),并设置权重与失败阈值。
5.1 若希望在物理机与VPS间实现浮动IP或虚拟VIP,可在两个节点使用Keepalived配置VRRP。5.2 Keepalived基础配置(/etc/keepalived/keepalived.conf)示例: vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS; auth_pass 1111; } virtual_ipaddress { 203.0.113.10 } } 5.3 注意:跨ISP/跨公网节点使用VRRP会受限制,可将Keepalived用于同机房集群,跨地域使用BGP或DNS层的故障切换。
6.1 建议主从或主主复制:主站放在延迟低的台湾VPS与物理机之间,云端做只读副本或故障节点。6.2 MySQL主主配置要点:确保server-id不同、开启binlog并设置gtid_mode=ON(若用GTID)。6.3 基本步骤: 在A上:GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'pass'; CHANGE MASTER TO MASTER_HOST='B_IP', MASTER_USER='repl', MASTER_PASSWORD='pass', MASTER_AUTO_POSITION=1; START SLAVE; 6.4 文件同步:静态文件使用rsync+cron或rclone同步到对象存储(例如S3/GCS),命令示例: rsync -az --delete /var/www/ user@target:/var/www/
7.1 使用支持地理路由的DNS提供商(如NS1、Alibaba Cloud DNS、AWS Route53 Geo DNS)将台湾IP优先返回给台湾/东亚用户,其他地区返回云端IP。7.2 配置健康检查,异常时回退到云端IP或物理机IP。7.3 TTL设置建议:正常200-300s,快速切换场景可设为30-60s。
8.1 防火墙策略:在各节点限定管理端口仅允许运维IP;WireGuard端口只允许对端访问。8.2 WAF与DDoS防护:建议云端使用云厂商DDoS防护,VPS在机房侧使用IP黑名单与Fail2ban。8.3 日志与审计:集中日志到ELK/Prometheus+Grafana,设置告警。
9.1 上线前演练:在测试环境模拟节点断开和DNS切换,验证健康检查与数据一致性。9.2 上线步骤示例: - 部署并测试WireGuard隧道。 - 部署数据库复制并确认延迟在可接受范围。 - 部署反向代理并把流量引导到新节点(小流量灰度)。 - 切换DNS Geo策略并观察监控30分钟。 9.3 回滚:使用DNS回退、停止接受流量的新节点(NGINX权重=0)、恢复数据库主节点写入。
答:确认VPS提供商分配的是公网原生IP而非NAT地址,检查IP的PTR记录并设置正确的反向DNS;为邮件服务配置SPF、DKIM、DMARC,并在必要时在WHOIS和RIR中注册联系信息。同时避免通过第三方NAT出口转发邮件,保持IP的独立出站路径。
答:对延迟敏感的读写操作优先放在本地(台湾)节点,采用读写分离与本地写主策略;异步复制用于跨地域备份以降低延迟对写入性能的影响;若必须强一致,可考虑分布式数据库(例如CockroachDB)或用同步复制但接受更高延迟。
答:1) 检查网络连通:ping/WireGuard状态/wg show;2) 检查负载与健康:云LB健康检查与NGINX日志;3) 数据库复制状态:SHOW SLAVE STATUS\G 或 performance_schema 检查GTID延迟;4) 若是DNS问题,检查GeoDNS健康检测与缓存TTL,必要时人工修改DNS并通知用户。