官术网_书友最值得收藏!

  • 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
主站蜘蛛池模板: 道孚县| 汨罗市| 申扎县| 海盐县| 霍山县| 元谋县| 辽宁省| 舞钢市| 六安市| 合山市| 文水县| 肥东县| 垦利县| 兴山县| 深泽县| 合作市| 灵武市| 桑日县| 客服| 聂拉木县| 洮南市| 泽州县| 洮南市| 保山市| 南昌市| 武穴市| 博乐市| 白山市| 富阳市| 临沂市| 灵台县| 梓潼县| 西城区| 陆良县| 外汇| 高邑县| 鹤壁市| 株洲市| 宁陵县| 通州市| 碌曲县|