1.1 明确指标:带宽峰值、延迟要求、SLA、合规(如CDN/备案)、预算。
1.2 选厂商:优先选择在香港有多个可用区/机房的供应商(例如阿里云香港、腾讯云香港、AWS 香港、Azure HK)。比较价格、公网带宽、BGP线路、弹性IP与GSLB能力。
1.3 决策输出:至少准备两套跨机房(A、B)部署架构、独立公网IP、低TTL的DNS策略。
2.1 在控制台分别在机房A和机房B创建VPC/子网、并指定不同可用区。
2.2 为每个应用实例分配弹性IP(EIP),设置安全组只开放必要端口(80/443、3306 内网/指定IP)。
2.3 预留负载均衡器或准备一台专用HAProxy实例(推荐两台+Keepalived做虚拟IP冗余)。
3.1 在两机房各部署相同的Web实例(nginx/apache),示例:apt install nginx。
3.2 使用rsync+cron实现静态文件增量同步:在主站(A)执行 sudo rsync -az --delete /var/www/ user@B_IP:/var/www/ 并将命令写入 crontab(*/5 * * * *)。
3.3 对于大文件或频繁写入,推荐使用对象存储或第三方CDN作为静态资源托管,减少跨机房同步压力。
4.1 选择方案:主从(读写分离)或主主(双写需冲突解决),建议主从+VIP写主切换。
4.2 快速搭建主从:在主库my.cnf启用 server-id=1、log-bin=mysql-bin,创建复制用户:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;
4.3 在从库执行 CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; START SLAVE; 验证 SHOW SLAVE STATUS\G。
4.4 定期备份与延迟监测:用 mysqlbinlog / MTR、监控 slave_io_running/slave_sql_running。
5.1 如果使用云厂商LB,启用健康检查(HTTP /health),配置后端两机房的实例并设置会话保持(必要时)。
5.2 自建HAProxy示例配置(/etc/haproxy/haproxy.cfg):
frontend http-in bind *:80 default_backend webservers
backend webservers mode http balance roundrobin option httpchk GET /health server srvA A_IP:80 check server srvB B_IP:80 check
5.3 部署两台HAProxy并用Keepalived管理浮动VIP,Keepalived配置示例设置VRRP_ID、priority和notify脚本。测试:停掉主HAProxy,VIP应在10s内漂移到备机。
6.1 使用支持GSLB或健康检查的DNS服务(如Cloud DNS、DNSPod、Route53)。设置低TTL(如60s)以便快速生效。
6.2 配置策略:主机房A优先、当健康检查失败时自动切换到机房B的A记录;或按地理/延迟分配流量。
6.3 验证步骤:通过DNS查询(dig www.example.com @ns)+断开机房A健康检查观察DNS切换时间并优化TTL。
7.1 安全:开启WAF、限制管理端口、启用SSL(Let's Encrypt 或证书托管)。
7.2 监控:配置Prometheus/Grafana或云监控,监测CPU、连接数、响应时间、MySQL延迟与rsync成功率。
7.3 演练:制定SOP并定期做演练(主库故障切换、机房网络隔离、LB故障),记录时间与问题,持续改进。
8.1 回答:优先看运营商路径(多运营商BGP更稳),测试线路延迟(使用ping/traceroute和真实用户监测),如果目标用户在中国大陆需优先选择有直连/优化回程的香港机房或启用国际/中国大陆加速服务,同时根据预算选择带宽包或按流量计费。
9.1 回答:把会话状态存储到中心化存储(Redis集群/托管服务)或使用cookie+JWT无状态认证;若使用Redis建议部署跨机房主从或用云托管的全球分布式缓存并开启主备读写切换;避免依赖本地缓存保存重要状态。
10.1 回答:提前准备演练及自动化脚本(DNS切换脚本、数据库故障切换脚本、配置管理工具如Ansible/Terraform);使用低TTL、自动化健康检查和集群化备份;演练可将RTO降到数分钟到几十分钟,关键是预先验证和自动化。
