Anycast 是一种网络寻址和路由方案,多个服务器使用相同的 IP 地址,通过 BGP 路由协议将用户请求导向最近的节点。在 DNS 场景中,Anycast 能显著降低查询延迟、分散流量负载、自动实现故障切换。
建议至少部署 3 个以上节点,分布在不同的地理位置和网络运营商。典型的节点数量为 4-6 个,可以覆盖主要的地理区域。
每个节点运行相同的 BIND 配置,Zone 数据通过 AXFR/IXFR 从隐藏主服务器同步。所有节点对外宣告相同的 DNS 服务 IP。
每个节点通过 BGP 向所在网络的运营商宣告 DNS 服务 IP。当用户发起 DNS 查询时,BGP 根据最短路径原则将请求路由到最近的节点。
# 示例 BGP 配置(Quagga/FRR)
router bgp 65001
network 203.0.113.1/32
neighbor 192.0.2.1 remote-as 65002
BGP 收敛时间:节点故障后 BGP 收敛通常需要 30-120 秒,在此期间部分流量仍会发往故障节点。建议配合健康检查机制加速故障检测。
Zone 同步:所有节点必须保持 Zone 数据一致。建议使用隐藏主服务器(Hidden Master)集中管理 Zone 数据,节点通过 IXFR 增量同步。
监控:部署 Anycast 后需要监控每个节点的独立状态、BGP 会话状态和各节点的 DNS 查询延迟。建议使用 Prometheus + Blackbox Exporter。
EDNS Client Subnet:在一些场景下需要结合 ECS 扩展来传递用户的真实子网信息,确保就近解析策略在 CDN 等场景下也能正常工作。