首先要明确目标是实现多机房部署与流量分配。常用方法有:通过DNS轮询(A记录多个IP)、使用带权重的GSLB(全球流量调度)、或采用Anycast+BGP方式。对于普通业务,建议在DNS服务商处添加多条A记录或使用GSLB服务,并设置合理的TTL以控制切换速度。
1)在域名注册商或DNS服务商控制面板添加多条A记录,指向各机房公网IP;2)为每条记录设置适当TTL(如60-300秒)便于快速故障切换;3)若需基于地域或性能调度,启用GSLB或DNS GeoIP策略。
使用纯DNS轮询时无法感知后端健康状态,需配合主动健康检查或在前端部署反向代理/负载均衡器进行二级调度。
常见策略包括:DNS轮询(A记录多值)、GSLB(基于地域/延迟/权重调度)、Anycast(BGP层面路由到最近机房)、以及通过反向代理/全局负载均衡器(如F5/NGINX Plus、云厂商LB)做七层调度。每种方案有不同成本与复杂度。
DNS轮询:实现简单、成本低,但不具备健康检测与会话保持。GSLB:支持健康检查与智能路由,但成本与配置复杂度较高。Anycast:用户就近访问、切换快速,但BGP与IP申请复杂。七层LB:可实现会话保持与应用感知调度,但需要集中出口或跨机房同步会话。
首先选择支持健康检查与规则化路由的GSLB或DNS服务商。配置要点包括:配置健康监测URL/端口,定义失败阈值与恢复阈值;设置不同机房的权重以控制流量比;开启GeoIP或延时探测以实现就近路由;最后设置合理TTL平衡切换速度与DNS缓存问题。
建议至少配置HTTP/HTTPS探针,检查返回码与响应时间;对数据库等依赖也要做链路探测。GSLB在探测失败时应自动将该机房IP下线并将流量重分配到健康节点。
探测间隔:10-30秒,失败次数阈值:3次,恢复阈值:2次,TTL:60-300秒,权重按机房带宽/资源设定(如主机房权重100,次级机房权重50)。
示例一(DNS多A记录):在DNS添加记录:www.example.com A 203.0.113.1(香港机房A) A 203.0.113.2(香港机房B)。示例二(GSLB):在GSLB控制台添加两个Pool,分别指向各机房IP,配置健康检查并设定权重、Geo策略和TTL。
在前端部署NGINX或云LB做七层转发,域名指向前端LB的IP;LB根据URL、头部或Cookie做会话保持,并将请求转发到后端不同机房的隧道或专线节点。证书可在前端统一管理以简化HTTPS。
建议在域名入口(DNS或LB)处终止TLS并使用统一证书(通配符或SAN)。若跨机房需要直连后端,请做好内部链路的TLS或信任配置。
注意事项包括:控制TTL以兼顾切换速度与查询量、确保健康检查覆盖关键链路、合理配置权重与会话保持策略、处理DNS缓存与ISP缓存差异、测试故障切换并制定回滚方案。安全方面要防止DNS污染与DDoS攻击,建议启用DNSSEC与流量清洗服务。
建立多维度监控:DNS解析成功率、探测响应时间、后端P95/P99延迟、错误率、带宽与连接数。设置告警级别:探针失败立即告警并自动下线节点;高延迟/错误率触发流量降级或重路由。同时保存切换日志与回溯记录,定期做演练。
1)制定故障切换SOP;2)定期验证GSLB探测与DNS解析结果;3)模拟机房故障并评估业务影响;4)与DNS/GSLB/网络供应商保持通畅沟通渠道。