DNS-构建域名解析缓存

情景提要

在部署服务器时,很多应用程序需要调用域名解析服务,一般通过配置/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

猜你喜欢

转载自www.cnblogs.com/hxlinux/p/12977083.html