前面更新了个程序,每次拉取数据都会查询gfs_shadow_master等相关域名,当请求量大时,dns有些抗不住了,程序响应也就变慢了,于是想到了用dnsmasq做本地dns缓存,效果很好。下面直接上部署代码吧:


yum install -y dnsmasq
cat << END > /etc/dnsmasq.conf
listen-address=127.0.0.1
#strict-order
cache-size=2048
resolv-file=/etc/resolv.dnsmasq.conf
END
echo -e "nameserver 10.1.1.8\nnameserver 10.1.1.9" > /etc/resolv.dnsmasq.conf
chkconfig dnsmasq on
/etc/init.d/dnsmasq restart
sed -i "1inameserver 127.0.0.1"  /etc/resolv.conf


代码说明下:

   listen-address:表示监听的地址;

resolv-file:指定后端dns服务器;

strict-order:如果本地没有结果,则按顺序请求resolv-file中的dns server,不加此项则随机请求后端server;

cache-size:指缓存记录条数;


另外,缓存是有TTL的,如果dns server更新了某条记录,需要等待一段时间dnsmasq才会更新,如果要马上生效,可执行

/etc/init.d/dnsmasq reload


这些配置满足了当前的需求,具体其他配置可以参考官网或dnsmasq --help。