DNS不稳定
最近一段时间,国内的一些DNS解析服务器会时不时的请求超时,结果就是线上业务会出问题导致某些API地址不能解析。总是在出问题后再上线改服务器,虽然用saltsatck
下发一下resolv.conf文件很方便,但是当我们意识到DNS
解析出问题的时候,可能故障已经发生很久了-_-!
。如是,搬砖需求又来了,写了个脚本实现自动检测DNS
服务器是否解析正常,如果不正常自动更新系统的DNS
解析服务器地址。
脚本的内容
1 | #coding=utf-8 |
给脚本加上x
权限,用nohup
命令放到后台执行,每隔一段时间来检测一下域名是否正常,如果不正常的值超过了阀值,那么就更新/etc/resolv.conf
文件。
脚本搬砖逻辑
脚本check()
函数的元祖TargetUrl
存放的是需要检测的域名,可增减。main()
函数中列表是待替换的DNS
解析服务器地址,循环使用,因为这些服务器不会一直出问题的。 脚本用了两个域名做测试,失败阀值是1s
(因为当第一个DNS域名解析服务器解析正常时耗时远远小于1s
,而当第一个DNS域名解析服务器不正常而第二个正常时,解析时间大概在3.7s
左右),连续失败2
次就更新DNS解析服务器地址列表。