情景提要
在部署服务器时,很多应用程序需要调用域名解析服务,一般通过配置/etc/resolv.conf来指定DNS服务器的IP。但是如果程序发起的请求量较大,那么服务器就容易被这些DNS服务器禁止访问;同时每次都去访问外部DNS服务器,会导致延时增加,遇到网络不好,还会发生解析不成功。因此,需要配置一个透明的DNS解析缓存服务,达到:
优化DNS响应速度通过缓存DNS的请求结果,后续相同的DNS请求不再通过访问任何外部网络服务器来获得结果,减少了网络延时
减少DNS对外部环境依赖在缓存的周期内,相同的DNS请求不再发生网络通信行为,可以减少短暂的外部网络不可用导致的影响。
NSCD(Name Service Caching Daemon,名称服务器缓存进程)安装配置
安装
NSCD不需要对应用程序或者是解析器做任何修改,/etc/resovl.conf也不需要做如何变化,对于系统的影响最小,因此,NSCD成为Linux系统中使用最广泛的域名缓存软件。
在CentOS7.6上安装比较简单,使用yum安装:
[root@CentOS7 ~]# yum -y install nscd
查看配置
nscd会缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL)。其作用就是在本当中增加cache ,加快如DNS的解析等的速度。nscd的配置文件时/etc/nscd.conf,核心代码是:
server-name nscd //nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项。
debug-level 0 //设置希望的调试级别。
paranoia no
enable-cache hosts yes //指定对DNS解析进行缓存
positive-time-to-live hosts 3600 //对解析成功的DNS结果进行缓存的时间
negative-time-to-live hosts 20 //对解析失败的DNS结果进行缓存的时间。例如网络故障导致的DNS解析失败或者请求的DNS条目没有配置等
suggested-size hosts 211 //是NSCD内部的哈希表的大小,如果缓存条目数量远大于默认的的211(比如10倍,就修改此值)
check-files hosts yes //是否检查/etc/hosts文件的变化
persistent hosts yes //是否在重启NSCD时保留已经缓存的条目
shared hosts yes //是否允许客户端直接查询NSCD的内存镜像以获得结果
max-db-size hosts 33554432 //是指DNS的缓存大小(以字节为单位)
启动nscd
[root@CentOS7 ~]# systemctl restart nscd
查看nscd运行状态
[root@CentOS7 ~]# systemctl status nscd