公司使⽤的问题是阿⾥云基础设施,DNS解析使⽤的何解是境外的Akamai作为域名的DNS解析服务商。
当前有部分应⽤需要被第三⽅应⽤调⽤,决跨境D解析同时也有主动调⽤第三⽅应⽤的失败需求。最近突发了很多调⽤失败问题。问题
应⽤调⽤失败:
Gitlab拉取失败:
抓包命令:tcpdump -i any -s 0 port 53 and host 【域名】 -C 100 -W 50 -w
/tmp/dns.pcap
参数说明:
-i:指定要过滤的何解⽹卡接⼝,如果要查看所有⽹卡,决跨境D解析可以-i any
-s: tcpdump 默认只会截取前96字节的失败内容,要想截取所有的问题报⽂内容,可以使⽤-s
number,何解number就是决跨境D解析你要截取的报⽂字节数,如果是失败 0 的话,表示截取报⽂全部内容
-C:file-size,tcpdump 在把原始数据包直接保存到⽂件中之前, 检查此⽂件⼤⼩是否超过file-size。如果超过了, 将关闭此⽂件,另创⼀个⽂件继续⽤于原始数据包的记录,新创建的⽂件名与-w 选项指定的⽂件名⼀致,但⽂件名后多了⼀个数字。该数字会从1开始随着新创建⽂件的增多⽽增加。file-size的单位是百万字节(nt: 这⾥指1,000,000个字节,并⾮1,048,576个字节,后者是以1024字节为1k,1024k字节为1M计算所得,即1M=1024 *1024 = 1,048,576)。这⾥是100M
-W参数:与-C参数⼀起使⽤时,可以达到循环写⼊⽂件的作⽤。这⾥是抓50个⽂件
-w ⽂件路径和⽂件名 ⽤于指定保存⽂件的路径和名称,没有指定路径默认在系统默认路径下;
标准默认resolv.conf标准配置:
options timeout:2 attempts:3 rotate single-request-reopen
#这条配置使得在解析域名时在所有的nameserver中进⾏ 随机 的选择。
nameserver 100.100.x.xxx
nameserver 100.100.x.xxx
多次执⾏命令:dig whoami.ds.akahelp.net txt +short
"ns" "106.xx.xxx.8"
"ns" "106.xx.xxx.8"
"ns" "106.xx.xxx.7"
"ns" "106.xx.xxx.6"
"ns" "106.xx.xxx.6"
"ns" "106.xx.xxx.7"
"ns" "106.xx.xxx.1"
"ns" "106.xx.xxx.6"
"ns" "106.xx.xxx.8"
"ns" "106.xx.xxx.6"
"ns" "106.xx.xxx.6"
"ns" "106.xx.xxx.7"
原因如下:
a. ⾸先阿⾥云的DNS服务没有缓存
b. 当⽤户或应⽤发起域名解析后
c. 如果阿⾥云DNS服务器⾥有请求过的地址且TTL时间未过期的话就直接返回结果
d. 否则阿⾥云DNS服务器将去境外Akamai去请求解析记录,但由于从国内到境外的⽹络
波动会导致部分请求失败
在⻓期解决⽅案未落地前我们使⽤了2个临时解决⽅案。
1. 如果是A记录的通过临时绑定Hosts解决
2. 如果是CNAME记录或其它的则使⽤阿⾥云的Private Zone临时内⽹DNS解析服务解决
为了能⻓期解决这个问题,我们还是准备把域名解析服务放到阿⾥云的云解析上。保证国内访问没有问题。同时应⽤也要做两个变更:
1. 要设置调⽤失败的重试机制,⽐如失败后重试3次每次间隔3秒
2. 要设置重试后任然失败的补偿机制,这个需要业务负责⼈去制定具体的补偿规则
责任编辑:武晓燕 来源: 新钛云服 阿⾥云DNS重试机制(责任编辑:休闲)
爱美客(300896.SZ)年报推10转8派35元 除权除息日为2021年3月16日
西力科技(688616.SH):网上发行最终中签率为0.02967172% 配号总数为96,51,58个
股权登记日第二天卖出股票还有分红吗?为什么股票一除权就亏了?