openresty DNS解析失败name resolution failed解决方案

本文记录了一次线上问题,当网络部门进行网络切割后,某个域名出现name resolution failed的503错误,每两分钟触发一次。经过排查,发现openresty在DNS查询时,默认顺序导致了问题。openresty会按照LAST, SRV, A, CNAME的顺序查询,而内部DNS解析策略不同,仅支持A记录。通过对DNS查询逻辑的理解,以及与DNS部门的沟通,确定问题是由于LAST类型的DNS缓存导致。最终通过修改openresty的dns_order参数,移除LAST类型,成功解决了问题。" 112359004,10324587,Qt学习:QML中的TextInput与TextEdit,"['Qt开发', 'QML', 'GUI设计', '文本输入']
摘要由CSDN通过智能技术生成

记一次线上问题,同一个域名,之前一直正常,在网络部门做完网络切割后,该域名偶尔会遇到status=503,message=“name resolution failed”,时间频率很奇怪,基本2分钟就会触发。而其余大部分都是正常200,错误信息如下图。
在这里插入图片描述

排查过程

通过dig该域名,发现该域名与其他正常请求唯一的区别在于该域名做了2次CNAME。

首先,由于看到有时间上的规律,开始只是调整了retrans , timeout参数,即DNS的重试次数和超时时间,但经测试发现并没什么鸟用,依然按这个规律报503。
后来通过看源码,分析流程,发现正常openresty会通过域名向DNS去查询地址,若有缓存,先从缓存中直接拿IP地址。若没有,则会去DNS查询,这里要提到一点。openresty默认会以4中类型的顺序依次去DNS查询,分别是LAST,SRV,A,CNAME,上一个没查到结果,就会去执行下一种类型。

这里需要普及下这四种类型:
1 LAST
将上次DNS解析成功的类型缓存起来,下次请求进来会直接从缓存中拿上一次成功的类型。
2. SRV
用来指定服务地址。与常见的A记录、cname不同的是,SRV中除了记录服务器的地址&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值