1.
需求分析与RPO/RTO设定
- 确定业务分类(OLTP、文件服务、静态网站、批处理)。
- 为每类设置RPO(可接受的数据丢失)和RTO(恢复时间目标)。例如:支付系统RPO=0,RTO≤5min;静态站点RPO=1h,RTO≤30min。
- 列出依赖(外部API、DNS、证书)。
2.
网络连通与安全通道搭建
- 在HK/TW各侧开通公网/VPN或专线:建议使用IPSec或OpenVPN做点对点隧道。示例OpenVPN安装:apt install openvpn;配置server.conf/client.conf并交换证书。
- 配置防火墙白名单仅允许必要端口(SSH、DB复制端口、应用端口)。使用iptables/ufw规则并保存。
- 建议启用双栈(IPv4+IPv6)和监控链路延时(ping、mtr)。
3.
数据层冗余:数据库复制策略
- 选型:主从(异步)适合低延迟写;半同步或CDC+Proxy适合强一致;Galera适合多活但对延迟敏感。
- MySQL 主从快速配置(示例):在主库执行:SHOW MASTER STATUS; 在从库执行:CHANGE MASTER TO MASTER_HOST='hk_ip', MASTER_USER='repl', MASTER_PASSWORD='pw', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 4; START SLAVE; 验证:SHOW SLAVE STATUS\G。
- 定期做全量备份(mysqldump --single-transaction)并用增量binlog配合归档。若使用Postgres,采用pg_basebackup与logical replication。
4.
文件/对象同步与共享
- 静态文件可用rsync+cron:rsync -az --delete /var/www/ user@tw:/var/www/。若文件量大,建议用Rsync+lftp或对象存储跨区复制(S3兼容)。
- 对于实时写入的共享文件,考虑使用分布式文件系统(Ceph/Gluster)或将文件写入中央对象存储以避免一致性问题。
5.
负载均衡与故障切换
- 前端:使用DNS + 健康检查的GeoDNS(如Cloudflare/NS1)做主动流量分配。配置短TTL(60-120s)以缩短切换时延。
- 内部流量:部署HAProxy/Nginx做反向代理,结合Keepalived实现VIP漂移。Keepalived示例:配置vrrp_instance,设置priority,使用notify脚本在主备切换时更新后端。
- 使用ProxySQL或PgBouncer做数据库连接路由与读写分离。
6.
监控、告警与自动化演练
- 部署Prometheus+Grafana监控主机/应用/DB指标,配置Alertmanager报警(短信/邮件/Slack)。
- 编写Runbook(故障触发条件、定位步骤、切换命令)。把常用切换命令做成可执行脚本并权限控制。
- 定期演练:每季度进行一次模拟主数据中心宕机的演练,记录RTO/RPO并优化。
7.
运维自动化与基础设施即代码
- 使用Ansible/Terraform管理节点配置与网络资源,示例Ansible playbook同步配置和重启服务。
- 建立CI/CD流水线,自动发布到HK和TW环境,保证配置一致性并可回滚。
8.
测试与验证步骤(逐条可执行)
- 连通性测试:从HK到TW执行ping/mtr/traceroute,记录时延与抖动。
- 复制验证:写入主库一条测试记录,等待从库可见并校验binlog位置。
- 切换演练:在非高峰期手动停止HK主服务,触发VIP漂移和DNS切换,验证服务在TW上恢复并记录时间。
9.
常见问答一
问:在跨港台部署时,数据库应选主从还是多活?
答:若业务对写延迟敏感且可以容忍短暂不一致,主从+自动故障切换(ProxySQL/Orchestrator)通常更稳定;多活(Galera等)需评估网络延迟对冲突和性能的影响。
10.
常见问答二
问:如何确保DNS切换不会导致长时间不可达?
答:使用短TTL(60-120s)、在切换前同步好内容并通过健康检查确认目标可用,同时结合Anycast/GeoDNS和证书一致性来减少中间失联窗口。
11.
常见问答三
问:演练频率与指标如何设定?
答:至少季度演练一次,记录RTO/RPO并设定可接受阈值(如RTO≤5min),若不达标,立即分析瓶颈并优化网络、复制或自动化脚本。
来源:灾备与冗余设计 在香港与台湾服务器 联动中实现高可用架构