Linux系统优化我用 LinuxLinux学习|Gentoo/Arch/FreeBSD

Linux下域名解析的优化

2016-09-01  本文已影响1075人  haw_haw

缘起

Linux系统下域名解析的配置文件是/etc/resolv.conf,这个大家都知道。估计一般的系统管理员、运维人员都知道在这里面配置上两个或更多的nameserver,以便一个挂掉后还能正常解析域名。但真的情况是这样吗?
我从某次故障说起吧,有一次,线上报大量的dns解析失败,上去看,发现是一台nameserver挂掉了,幸好/etc/resolv.conf中的另外一台没有挂,所以,还不是百分百的解析失败。从逻辑上来讲,这些失败的请求应该会去尝试另外一个(好的)nameserver的,但是重试的场景和策略是什么呢?不得而知。所以我就关注了下/etc/resolv.conf文件的配置问题。

下策

优化方案之一,就是在/etc/resolv.conf中做优化设置。优化前内容如下:

nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3

优化之后,文件内容变为:

options timeout:1 attempts:1 rotate
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3

这里大概讲下新加的几个选项的含义:

之所以这只是下策,是因为这种解决方案如果碰到有一台nameserver(假如是10.0.0.1)挂掉的情况下,客户端解析请求如果又恰好分到这台nameserver的时候,应用会解析超时失败的概率太高了。

中策

中策就是做nameserver的高可用,用lvs来做,做两个vip:10.0.0.4和10.0.0.5,后端real server还是指向这三台真实的nameserver:10.0.0.1、10.0.0.2和10.0.0.3,这样real server的健康状况就由lvs来维护了,这样当客户端来访问vip时,只要后端的3台不都挂掉,就一定能保证返回正确的结果。
具体的配置我就不贴了,直接用keepalived来做即可。
这个解决方案其实也挺完美的,尤其是当有现成的lvs director的时候。看了最后一策,就知道为什么这个只是中策了。

上策

这个方案是我仔细考虑后推荐的方案,尤其适用于没有现成的lvs director的环境里。这个方案的主要特点是:

这个方案的优点在于:

这个方案能够自动做dns server的故障切换,而且不引入任何外部的依赖(dnsmasq是本机跑的),几乎不影响性能,甚至于还有可能提升性能,毕竟,dnsmasq也是会做一级缓存的。所以,我认为其为上策!

上一篇 下一篇

猜你喜欢

热点阅读