1.
总体架构与目标定义
小分段:明确目标(高可用、低时延、抗DDoS、数据一致性)。选择至少两个地理独立的机房(例如:香港机房A、香港机房B或香港+亚太邻近机房)。定义RTO(恢复时间目标)与RPO(恢复点目标),例如RTO≤10分钟,RPO≤1分钟。
2.
网络入口与流量调度设计
小分段:采用GSLB/Anycast或DNS Failover。推荐方案:使用Anycast+GSLB做主动健康检查,若不可用则自动切换到备机房;若采用DNS Failover请将TTL设置为60秒并配合健康检查。配置示例:GSLB设置各机房权重、健康检查路径(HTTP 200、TCP 22、ICMP);为防止DNS缓存增加误差,使用低TTL并在切换时通知CDN/解析商刷新。
3.
DDoS与WAF防护层
小分段:在边缘使用DDoS清洗服务(云厂商或第三方),并部署WAF策略(规则集+自定义规则)。实际步骤:1) 将域名指向防护厂商CNAME/Anycast IP;2) 配置WAF白名单/黑名单和速率限制;3) 对异常流量启用验证码与挑战页面以减轻源站压力。
4.
应用层负载均衡与会话处理
小分段:使用L4/L7负载均衡(例如Nginx、HAProxy或云LB)。对于会话状态,推荐无状态化或集中会话(Redis/Memcached)。操作示例:在应用中将session存储改为Redis,部署Redis主从或哨兵/Cluster,示例配置:redis.conf 开启appendonly和复制,客户端连接使用连接池。
5.
数据库跨机房复制与一致性
小分段:对MySQL类数据库建议使用异地同步+本地读写分离。主从(主机房写、备机房只读)或Group Replication/Galera实现多主。实操步骤:1) 开启GTID;2) 在主库执行mysqldump或Xtrabackup建立基线;3) 在备库执行CHANGE MASTER TO MASTER_AUTO_POSITION=1;4) 验证SHOW SLAVE STATUS;5) 设置延迟检测与自动提升脚本。
6.
文件/对象存储同步
小分段:静态资源使用对象存储(S3兼容)并开启跨区域复制(CRR)。若使用本地文件系统,可用rsync+cron或lsyncd做实时同步;更可靠方案是分布式文件系统(Ceph、MinIO分布式)。rsync示例命令:rsync -azP --delete /var/www/ user@backup:/var/www/,并结合rsyncd或ssh key自动化。
7.
配置管理与自动化部署
小分段:使用Ansible/Terraform编排基础设施与配置,避免手工差异。实操步骤:1) 编写Ansible playbook部署Nginx、应用、监控agent;2) 使用CI/CD触发蓝绿或滚动发布;3) 在切换时执行健康检查脚本确保新版本可用再下线旧版本。
8.
监控、告警与观测实践
小分段:部署Prometheus+Grafana+Alertmanager或云监控。关键监控项:机房可达性、丢包、延时、连接数、CPU、磁盘I/O、数据库延迟、队列堆积。设置阈值告警并集成电话/短信/钉钉/Slack通知,保证有人值守并能按SOP处理。
9.
容灾演练与切换SOP
小分段:每季度至少一次完整演练。演练步骤示例:1) 在低峰时段模拟主机房故障;2) 触发GSLB切换或修改DNS并记录切换时间;3) 验证应用、数据库、文件同步及外部接口可用;4) 回滚并归档演练日志,优化SOP。
10.
备份策略与恢复验证
小分段:数据分为热备(同步/半同步)、冷备(每日快照)与长期归档。实操:使用Xtrabackup做物理备份并上传对象存储,保留策略为7天热备+30天冷备。定期做恢复演练:在备用环境按照备份文件恢复数据库并验证数据完整性。
11.
合规与IP规划
小分段:
香港站群注意IP归属、备案/注册(视服务类型合规)。为节省切换时间,预留弹性公网IP或使用预配置Anycast IP。对外发布白皮书或说明以满足客户合规审计。
12.
工具与脚本示例(简要)
小分段:提供常用命令片段:1) 检查健康:curl -sS -o /dev/null -w "%{http_code}" http://127.0.0.1/health;2) rsync:rsync -azP --delete /var/www/ backup:/var/www/;3) MySQL设置GTID:SET GLOBAL gtid_mode=ON;。将这些脚本入库并纳入CI执行。
13.
问:多机房切换时如何保证数据库不出现写冲突?
小分段:答:最稳妥的方法是主写单点(Primary 在主机房),备机房作为只读或延迟复制;若要求多主写,必须使用冲突检测的同步方案(Galera或Group Replication),并在应用层设计幂等与冲突解决机制。务必启用GTID并对提升流程做自动化。
14.
问:如何在切换时最小化用户体验影响?
小分段:答:结合低TTL DNS、Anycast/GSLB与CDN做分层切换;会话通过共享Redis或token化设计避免强制登出;切换前先把新机房流量跑满做灰度,切换后做连接排水(drain)避免突断。
15.
问:日常运维中有哪些关键指标必须持续关注?
小分段:答:必须关注机房可达性(icmp/tcp)、应用响应时间、错误率(5xx)、数据库复制延迟、队列积压、磁盘容量与异常流量突增。基于这些指标制定自动化告警与自愈脚本,确保快速定位与恢复。
来源:通过多机房部署实现服务器香港站群的防护与容灾策略