1.
概述与目标
目的:在香港区域使用 CN2 网络的云服务器,跨多个机房实现高可用与容灾。
输出:明确节点部署、数据同步、流量切换与演练步骤,能在节点故障时快速切换并保证数据一致性。
2.
准备工作与前置条件
准备:两家或以上支持 CN2 的云厂商机房(不同物理机房/可用区)、域名提供商支持低 TTL 与健康检查、管理 VPC/防火墙规则。
账号:开通SSH密钥、购买公网IP、准备备份存储(对象存储或NAS)。
3.
多机房拓扑设计
建议拓扑:至少两个数据中心(A/B),每个中心至少两台实例:应用节点+数据库节点;前端采用独立负载层或DNS+LB组合。
私网及公网:内部私网互通用于复制,公网用于对外服务与健康检查。
4.
网络与IP、路由规划
BGP/CN2:选用 CN2 链路的线路或带有 CN2 下行的云主机,确保港陆互联延迟低。
子网规划:为每机房规划固定私网段(如10.10.A.0/24),配置安全组允许必要端口(22,80,443,3306,6379,端口健康检测端口)。
5.
实例部署与基础配置
操作系统:建议选择稳定的 Ubuntu/CentOS;配置 SSH key、时区、NTP、关闭不必要服务。
软件安装:安装 Nginx/应用运行环境、MySQL 或 MariaDB、Redis、HAProxy、Keepalived、监控 agent(Prometheus node_exporter)。
6.
MySQL 数据库复制(示例:主从/主主)
步骤要点:在主库启用二进制日志(log_bin)、配置 server-id,不同机房使用不同 server-id。
操作命令示例:在主库执行 mysqldump --single-transaction,记录 SHOW MASTER STATUS;在从库执行 CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='logfile', MASTER_LOG_POS=123; START SLAVE; 并验证 SHOW SLAVE STATUS\\G。
7.
Redis 高可用(Sentinel)配置示例
部署:每个机房至少一个 Redis 主/从,部署 3 个或更多 Sentinel(跨机房分布)以保证 Quorum。
sentinel.conf 关键项:sentinel monitor mymaster 10.10.1.10 6379 2;sentinel down-after-milliseconds mymaster 5000;sentinel failover-timeout mymaster 60000。
8.
负载均衡与虚拟IP故障切换(HAProxy + Keepalived)
HAProxy:配置后端为本机房应用池,开启健康检查 http-check。示例 acl、backend 配置用于按健康状态下线节点。
Keepalived:在两台或多台LB上配置 VRRP 虚拟IP,以便单机故障时漂移。配置优先级、跟踪脚本做健康判断。
9.
DNS 与流量切换策略
使用支持健康检查的 DNS(如 Cloudflare、DNSMadeEasy)或 Route53:设置低 TTL(30-60s),配置主备记录或基于地理/健康的流量分发。
主动切换:配合监控脚本,当检测到机房不可用时,自动用 API 更新 DNS 记录;或使用 DNS 提供商的内置健康检查与 Failover。
10.
数据同步与文件共享方案
静态文件:使用对象存储(S3/兼容)并启用跨区域复制,或用 rsync+cron 做增量同步。
数据库一致性:对于强一致性需要采用主主+冲突解决或外部分布式数据库;常规场景用主从+应用侧读写分离。
11.
故障演练与验证步骤
演练流程:1) 模拟单点机房断电(下线主LB),验证 VIP 漂移与DNS切换;2) 模拟主库故障,验证从库提升(手动或自动),检查应用切换。
验证点:无数据丢失、会话恢复或短暂失效在可接受窗口内、恢复脚本有效。
12.
监控、告警与自动化恢复
监控项:主机、网络延迟、数据库复制延迟、Redis 主从状态、LB 健康、DNS 检测。
自动化:结合 Prometheus Alertmanager 或云厂商告警,触发脚本自动切换 DNS、提升从库、重建 VIP。
13.
常见问题 Q1:CN2 香港多机房部署的成本和延迟折衷如何处理?
答:成本与延迟需平衡。CN2 链路提高稳定性与丢包率低但价格较高。对延迟敏感业务选 CN2 + 跨香港机房布局;对成本敏感可只在关键路径使用CN2,其他备份机房使用普通链路。
14.
常见问题 Q2:如何确保跨机房数据库切换无数据丢失?
答:使用二进制日志+GTID 或强同步复制策略,尽量减少主写入确认策略为 ACK(视业务可接受度)。演练中确认最后一笔日志已同步并在切换前完成刷盘。
15.
常见问题 Q3:部署完成后如何做日常维护与演练频率?
答:建议每季度进行一次完整故障演练,每月进行小范围切换演练。例行检查包括复制延迟、磁盘空间、证书有效期、备份恢复演练。
来源:cn2香港云服务器 多机房部署实现高可用容灾的实务步骤