- 前言
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第 1 篇 高性能网站构建
- 第 1 章 深入理解 DNS 原理与部署 BIND
- 第 2 章 全面解析 CDN 技术与实战
- 第 3 章 负载均衡和高可用技术
- 第 4 章 配置及调优 LVS
- 第 5 章 使用 HAProxy 实现 4 层和 7 层代理
- 第 6 章 实践 Nginx 的反向代理和负载均衡
- 第 7 章 部署商业负载均衡设备 NetScaler
- 第 8 章 配置高性能网站
- 第 9 章 优化 MySQL 数据库
- 第 2 篇 服务器安全和监控
- 第 10 章 构建企业级虚拟专用网络
- 第 11 章 实施 Linux 系统安全策略与入侵检测
- 第 12 章 实践 Zabbix 自定义模板技术
- 第 13 章 服务器硬件监控
- 第 3 篇 网络分析技术
- 第 14 章 使用 tcpdump 与 Wireshark 解决疑难问题
- 第 15 章 分析与解决运营商劫持问题
- 第 16 章 深度实践 iptables
- 第 4 篇 运维自动化和游戏运维
- 第 17 章 使用 Kickstart 完成批量系统安装
- 第 18 章 利用 Perl 编程实施高效运维
- 第 19 章 精通 Ansible 实现运维自动化
- 第 20 章 掌握端游运维的技术要点
- 第 21 章 精通手游运维的架构体系
最佳实践 2:构建域名解析缓存
域名解析缓存的必要性
在部署服务器时,很多应用程序需要调用域名解析服务,一般通过配置/etc/resolv.conf 来指定 DNS 服务器的 IP。但如果程序发起的请求量较大,那么服务器就容易被这些 DNS 服务器禁止访问;同时每次都去访问外部 DNS 服务器,会导致延时增大,遇到网络问题时,还会发生解析不成功的情况。在这种情况下,需要配置一个透明的 DNS 解析缓存服务,以达到如下的效果。
- 优化 DNS 响应速度。通过缓存 DNS 的请求结果,后续相同的 DNS 请求不再通过访问任何外部网络服务器来获得结果,减少了网络访问的延时。
- 减少 DNS 对外部网络的依赖。在缓存周期内,相同的 DNS 请求不再发生网络通信行为,可以减少短暂的外部网络不可用导致的影响。
NSCD 安装配置方法
NSCD(Name Service Caching Daemon,名称服务缓存进程)不需要对应用程序或者解析器做任何修改,/etc/resovl.conf 也不需要做任何变化,对于系统部署的影响最小。因此,NSCD 成为 Linux 环境中得到最广泛的使用的域名缓存软件。本实践使用该软件构建域名缓存服务。在 CentOS 6.6 上,安装 NSCD 的方法比较简单,使用如下命令:
yum -y install nscd
NSCD 的配置文件是/etc/nscd.conf,核心的配置代码段如下:
enable-cache hosts yes positive-time-to-live hosts 3600 negative-time-to-live hosts 20 suggested-size hosts 211 check-files hosts yes persistent hosts yes shared hosts yes max-db-size hosts 33554432
其中:
- enable-cache 指定对 DNS 解析进行缓存。
- positive-time-to-live 是指对解析成功的 DNS 结果进行缓存的时间。
- negative-time-to-live 是指对解析失败的 DNS 结果进行缓存的时间。例如网络故障导致的 DNS 解析失败或者请求的 DNS 条目没有配置等。
- suggested-size 是 NSCD 内部的哈希表的大小,如果缓存条目数量远大于默认的 211(如 10 倍以上,则修改此值)。
- check-files 是指是否检查/etc/hosts 文件的变化。
- persistent 是指是否在重启 NSCD 进程时保留已缓存的条目。
- shared 是指是否允许客户端直接查询 NSCD 的内存镜像以获得结果。
- max-db-size 是指 DNS 的缓存大小,以字节为单位。
域名解析缓存验证
在部署了 NSCD 后,可以使用如下命令检查结果:
wget http://www.xufeng.info/index.html
同时结合 tcpdump 抓包,可以发现连续的多次该请求,只是在第一次时产生了网络 DNS 请求,后续的 wget 命令,直接使用了 NSCD 的缓存结果,没有产生网络 DNS 请求。
另外,可以使用如下命令确认 NSCD 的缓存效果:
nscd -g hosts cache: 23 cache hits on positive entries #缓存命中的次数 0 cache hits on negative entries 13 cache misses on positive entries #缓存未命中的次数 0 cache misses on negative entries 63% cache hit rate #缓存命中率 12 current number of cached values #当前缓存的条目 13 maximum number of cached values
通过观察发现,cache hits on positive entries 这个字段的值不断增加,由此可以确认域名解析缓存是生效的。
在 Windows 系统中,每次 DNS 请求后,系统会按照响应结果进行缓存,使用如下命令可以看到当前系统中缓存的条目:
ipconfig /displaydns edu.csdn.net ---------------------------------------- 记录名称. . . . . . . : edu.csdn.net 记录类型. . . . . . . : 1 #1 为 A 记录,5 为 CNAME 别名等 生存时间. . . . . . . : 123 #在此时间内,本缓存记录有效 数据长度. . . . . . . : 4 部分. . . . . . . . . : 答案 A (主机) 记录 . . . . : 101.201.171.118 #对应的解析结果
使用如下命令可以清理本机的 DNS 缓存:
ipconfig /flushdns
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论