利用BGP Anycast 实现DNS的高可用

发布时间 2023-07-21 09:37:05作者: 颜天高佑

一、背景

    根据当前高栏港生产系统容器平台架构设计,在各生产线边缘机房部署容器平台,与数据中心容器平台形成纵向冗余,在此情况下,传统部署在数据中心机房的DNS系统成为容器平台业务服务的短板,一旦DNS系统出现故障或网络通信故障,将影响容器平台正常访问,原有的纵向冗余能力大大降低。

二、技术原理

         该方案利用BGP路由协议的多属性,可通过属性进行控制路由策略,从而决定客户端的访问路径,使得客户端访问就近站点;同时BGP协议的触发更新机制,网络中会及时删除已故障节点路由信息。DNS是基于UDP的无连接服务协议,客户端与DNS站点无持续会话传输数据,站点切换对用户影响很小(已丢失请求重传即可获取新数据)。

三、网络架构设计

 

 图1  网络架构示意图

拓扑说明

BGP AS号:64512(模拟骨干网),65511(模拟生产区一),65512(模拟数据中心)

IP地址:10.0.0.161,10.0.0.162分别为模拟生产区域一和骨干网络互联IP地址,

        10.0.0.181,10.0.0.182分别为模拟数据中心和骨干网络互联IP地址。

                   10.0.168.1为模拟生产区域一内DNS服务器真实IP地址,10.0.169.1为模拟数据中心内DNS服务器真实IP地址。10.1.1.6均为DNS服务器上的环回口IP地址。

客户端:10.1.168.11为生产区域一内客户端,172.16.16.12为模拟数据中心的其他服务器。

 

四、相关配置

4.1 网络设备

         4.1.1 骨干路由配置

bgp 64512 

router-id 10.0.255.121 

group BR internal 

peer BR connect-interface LoopBack0 

group DC external 

peer DC as-number 100 

peer 10.0.0.161 as-number 65511 

peer 10.0.0.169 as-number 65511 

peer 10.0.0.181 as-number 65512 

peer 10.0.6.2 group DC 

peer 10.0.6.6 group DC 

peer 10.0.255.122 group BR 

address-family ipv4 unicast 

  balance 4 

  network 100.100.100.100 255.255.255.255 

  peer BR enable 

  peer DC enable 

  peer 10.0.0.161 enable 

  peer 10.0.0.169 enable 

  peer 10.0.0.181 enable 

 4.1.2 生产区域配置

feature bgp 

router bgp 65511 

  address-family ipv4 unicast 

    network 10.1.168.0/24 

  neighbor 10.0.0.162 remote-as 64512 

    address-family ipv4 unicast 

  neighbor 10.0.168.1 remote-as 396385 

    address-family ipv4 unicast  

 4.1.3 数据中心配置

feature bgp 

router bgp 65512 

  router-id 10.0.255.10 

  address-family ipv4 unicast 

    network 172.16.16.0/24 

  neighbor 10.0.0.182 remote-as 64512 

    address-family ipv4 unicast 

  neighbor 10.0.169.1 remote-as 396385 

    address-family ipv4 unicast 

4.2 服务器

4.2.1 服务器网卡配置

 

 图2 服务器环回口配置

 

 图3 DNS服务器1网卡配置

 图4 DNS 服务器2网卡配置

4.2.2 服务器路由软件配置

 

 图5 DNS服务器1路由配置

说明:生产区域内,通过对BGP路由进行设置no-advertise,对外宣告10.1.1.6路由后,接收改路由的邻居(骨干网)不再向外传递,仅生产区域内的路由表会有2条路由,且本区直连DNS为最佳路径。

 

 图6 DNS服务器2路由配置

4.2.3 服务器DNS服务

 

 图7  DNS服务器1域名配置

说明:生产区域内针对域名tang.com的A记录地址为10.0.168.1

 

 图8  DNS服务器1域名配置

说明:数据中心内针对域名tang.com的A记录地址为10.0.169.1

4.2.4 DNS服务检查

 

 图9  DNS服务器1域名解析监控状态检查

DNS服务器上需要对域名解析服务进行健康检查,一旦异常,将触发路由服务进程,进行关闭或者撤销路由发布

4.3 客户端配置

 

图10 客户端1网络配置

 

 

图11 客户端2网络配置

五、测试效果

5.1 正常情况下,生产区域内客户端访问dns访问最短路径,优先选择和本区域直连的DNS服务器。

 

 图12生产区域内路由表

   

 

图13客户端 10.1.168.11访问10.1.1.6路径

 

 图14 客户端110.1.168.11解析域名结果

 

 图15 客户端2 172.16.16.12访问10.1.1.6

 

 图16 客户端172.16.16.12 解析结果

 说明:两台终端均就近站点访问,解析结果按照对应的DNS服务器配置进行返回域名解析结果。

 

5.2 模拟生产区域1内DNS服务故障

    模拟对域名tan.com进行解析,但是DNS服务未正常返回结果,触发停止FRR服务[W1] 。

 

 

图17执行脚本,并检查FRR服务

注:后续将脚本设置为后台运行,并根据实际情况,修改监控指标。

5.3区域一内客户端户端访问DNS发生切换。

故障切换时客户端10.1.168.11访问10.1.1.6情况

 图18 客户端1 访问DNS

ping过程仅丢1个包,访问路径TTL值发生变化说明站点已经切换

 

 图19 客户端访问DNS路径

 

查看生产区域内网路设备路由表是否

 

 

图20 生产区域网络设备BGP路由表信息

在生产区域(65511)里,已经不存在本地直连DNS服务器的BGP路由,只有从骨干网学习到的路由,因此客户端10.1.168.11访问10.1.1.6需要分别经过64512、65512、396385三个区域。

 

 

图21 访问切换示意图

5.4 DNS服务故障恢复

    手动重新启动frr服务,对恢复情况进行验证。

 

 

图22 切换过程中访问情况

         重新启动FRR服务后,DNS服务器迅速与网络交换机建立了BGP邻居关联,并发布了10.1.1.6的路由更新,根据BGP选路原则,生产区域(65511)内访问10.1.1.6优先访问直连站点,所以TTL值也增大,ping过程未发生丢包。

六、结论

    经过以上环境和测试,完成了BGP Anycast 技术进行DNS服务多站点部署,实现客户端最短路径访问、多站点间进行相互冗余的目标。


 [W1]通过停用FRR服务,会导致BGP 邻居关系down,如果频繁故障,可能会导致路由抖动。

参考资料:https://yetiops.net/posts/anycast-bgp/