DNS 是否适合做容灾

本文探讨了DNS作为容灾策略的适用性,分析了当DNS仅返回一个IP或多个IP时的问题,如不能确保就近接入和应对DNS故障。提出了解决方案——客户端使用地址列表,先尝试DNS解析出的IP,异常时再使用备用IP,以平衡就近接入和容灾需求。
摘要由CSDN通过智能技术生成

目录

场景

客户端:外网游戏玩家
服务端:外网游戏玩家直连服务。部署架构如下:

     ServerA
    /   |   \
   /    |    \
LB1    LB2    LB3
   \    |    /
    \   |   /
     ServerB

DNS: example.com –> IP1(LB1), IP2(LB2), IP3(LB3)

游戏客户端通过 example.com 访问服务,ServerA 和 ServerB 互备。
为了防止跨运营商网络故障及提升用户体验,三个 LB 分别对应移动、联通、电信。DNS 解析的目标是:移动用户返回移动的 LB, 联通的访问联通 LB, 因此类推,公司的 GSLB 系统实现了这一点。

问题

DNS server 返回一个 IP

按照上文的 DNS 配置,虽然一个域名配置了 3 个 IP, 但是为了实现就近接入,客户端每次域名解析实际上只返回一个 IP. 但是倘若访问的 LB 故障,那该客户端重试的机会都没有。
Note: 由于 DNS 是分级实现,且每一级都存在缓存,客户端是没办法做到短时间之内多次域名解析获取不同的 IP 的。

DNS server 返回多个 IP

如果一次解析返回多个 IP, 客户端逐个尝试是否可行?这样的确可以保证在不是所有节点都故障的情况下能连接成功,但是并不能保证就近接入。因为 DNS server 是没办法保证返回的 IP 的顺序的,这样就无法将就近网络的 IP 放在第一位。可以看一下 getaddrinfo() 的例子:

from optparse import OptionParser
import socket
import json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值