1.1 目标确认:确认为提升可用性要实现的目标(如 RTO < 15 分钟,RPO < 1 小时)和需要支撑的站点数量与流量峰值。
1.2 资源清单:记录现有服务(Web、App、DB、缓存、静态文件、异步任务)和依赖(外部API、SMTP等)。
1.3 账户与权限:在沙田节点服务商控制台准备好账号、计费方式、SSH Key、API Key(若自动化需要)。
1.4 网络与合规:确认公网IP、内网VPC子网、带宽上限、是否需要香港/中国大陆合规资质(如 ICP)等。
2.1 拓扑建议:采用主/备或主动-主动两地部署,主站放在主节点(可在沙田),备站选用另一香港或海外节点以防单点机房故障。
2.2 DNS策略:使用带健康检测的智能DNS(如 DNSPod、Cloudflare、AliDNS),设置较低TTL(60-300s)并开启健康检查。
2.3 流量分配:内部跨节点用专用内网/VPC或VPN互联,前端用负载均衡+DNS实现流量分发与故障切换。
3.1 创建实例:在控制台选择沙田节点,按业务类型选择CPU/内存/磁盘和带宽,建议生产环境至少两个实例做集群。
3.2 配置安全组:放通必要端口(80/443,SSH 22,数据库内网端口),限制SSH来源IP并启用防火墙(ufw/iptables)。
3.3 SSH与密钥:上传公钥并测试免密登录;在本地执行:ssh -i ~/.ssh/id_rsa root@沙田IP 验证连通性。
4.1 部署方式:推荐使用容器化(Docker + docker-compose / Kubernetes)或通过 Ansible 自动化。
4.2 静态文件同步:使用 rsync 或 lsyncd 实时同步:示例 rsync 命令:rsync -az --delete /var/www/html/ user@备节点:/var/www/html/。
4.3 对象存储替代:若可行,将图片/附件迁移到对象存储(S3兼容),前端采用 CDN,解耦文件同步复杂性。
5.1 主从复制准备:在主库 my.cnf 启用 server-id=1、log_bin,重启并执行:GRANT REPLICATION SLAVE。
5.2 在备库执行 CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='文件', MASTER_LOG_POS=位置;然后 START SLAVE;
5.3 自动故障切换:可使用 MHA、Orchestrator 或 keepalived+VIP 方案;简单方案是读取层通过 ProxySQL/HAProxy 指向当前主库并监控健康。
6.1 前端负载均衡:可选择云厂商LB或自建 HAProxy/Nginx。HAProxy 示例配置需设置 health_check,后端为沙田与备用节点。
6.2 会话保持:使用 Redis 共享会话或采用 JWT 无状态认证,避免单点会话粘性导致切换复杂。
6.3 VIP与路由高可用:内部可用 keepalived 设置 VRRP 实现虚拟IP漂移,示例 keepalived.conf 配置 master/backup 优先级。
7.1 数据库定期备份:使用 mysqldump 或 xtrabackup,cron 定时:0 */4 * * * /usr/local/bin/backup_mysql.sh 并上传到对象存储。
7.2 文件快照:对重要目录每日打 tar.gz 并 rsync 到异地存储或对象存储。示例:tar -czf /backup/www_$(date +%F).tar.gz /var/www && rclone copy /backup remote:bucket/。
7.3 恢复演练:每月一次在非生产环境模拟一次全链路恢复,记录RTO/RPO并优化流程。
8.1 关键监控项:主机资源(CPU/内存/磁盘/IO)、网络带宽、应用响应时间、错误率、数据库主从延迟。
8.2 工具建议:Prometheus + Grafana + Alertmanager,或云监控服务。设置短信/邮件/钉钉/Slack告警渠道。
8.3 健康检查:LB与DNS均配置健康探测脚本,探测返回200才当作可用节点。
9.1 CI/CD:使用 Jenkins/GitLab CI 将镜像推送到私有镜像仓库并在沙田节点自动滚动发布(蓝绿或滚动重启)。
9.2 灾难切换流程(精确步骤):1) 触发:主节点故障通知;2) 检查副本健康;3) 在备节点提升为主(MySQL:STOP SLAVE; RESET SLAVE; SET GLOBAL read_only=OFF;);4) 更新 ProxySQL/HAProxy 后端或切换DNS到备节点并降低TTL后观察;
9.3 回退策略:问题解决后将主库数据双向同步并按照逆向流程切回,先在灰度环境验证再切回生产。
10.1 读写分离:对读密集型站点采用读库池,降低主库压力。
10.2 CDN 与缓存:静态资源上CDN,动态页面使用 Redis/varnish 缓存,减少跨节点流量。
10.3 成本控制:将非高峰环境使用低配或按需实例,通过自动化脚本在低流量时段关停测试实例。
问:选择沙田节点是因为其网络对香港及粤港澳地区具有低延迟优势,且多数服务商在沙田具备稳定带宽与较低跨境抖动,适合面向香港/中国南方用户的主站部署与快速故障切换。
答:优势在于低延迟和本地化带宽,风险包括单机房故障与运营商限制。建议通过跨可用区或跨机房的多节点部署、智能DNS与定期演练来平衡风险。
问:常见错误包括未同步会话信息、忽略数据库延迟导致数据丢失、DNS TTL 设置过长导致切换延迟。避免方法是采用共享会话或无状态设计、严格监控主从延迟、将DNS TTL 设置低并使用带健康检查的DNS服务。
答:短期优先级:1) 完成沙田与备节点基础网络与实例部署;2) 搭建数据库复制与文件同步;3) 配置智能DNS与LB并演练一次故障切换;4) 上线基础监控与备份脚本。按此顺序可在最短时间内提升可用性与容灾能力。