- Linux運維最佳實踐
- 胥峰 楊俊俊
- 1098字
- 2019-01-04 00:50:52
最佳實踐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
- 操作系統實用教程(Linux版)
- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- Linux從零開始學(視頻教學版)
- Kali Linux滲透測試全流程詳解
- vSphere Virtual Machine Management
- 精通Linux內核開發
- 構建可擴展分布式系統:方法與實踐
- 嵌入式系統原理及開發
- 嵌入式系統及其應用(第三版)
- Windows 7使用詳解(修訂版)
- Linux軟件管理平臺設計與實現
- SAP后勤模塊實施攻略:SAP在生產、采購、銷售、物流中的應用
- C#實用教程(第2版)
- Instant Getting Started with VMware Fusion
- Building E-commerce Sites with Drupal Commerce Cookbook