- Linux運維最佳實踐
- 胥峰 楊俊俊
- 951字
- 2019-01-04 00:50:52
最佳實踐5:詳解BIND視圖技術及優化
上一個實踐使用多個A記錄的方式,實現了最基本的負載均衡設置。在中國目前的網絡環境下,多個運營商并存,運營商之間存在一定的互聯互通問題。如果把來自不同運營商或者地域的所有用戶通過簡單的A記錄分配到同一個機房,那么就存在部分用戶訪問延時大或者丟包的問題。
BIND視圖工作原理
那么這個問題怎么解決呢?在BIND里面提供了視圖(DNS View)技術來解決這個問題。DNS視圖技術,就是對同一個資源記錄根據DNS的請求來源IP地址不同分配給解析器不同的解析結果。也就是說,可以使用BIND視圖技術實現以下功能。
·對于來自山東省的中國電信的DNS請求,可以把用戶引導到部署在山東省中國電信機房的服務器上。
·對于無法匹配到某個具體運營商或者國外的用戶,可以把用戶引導到指定的一組默認服務器上。
所有以上的功能,都是為了實現用戶的就近訪問,也就是讓用戶訪問到對他來說網絡質量最好的服務器上。
下面來看一個具體的配置。
首先用acl/SD_CTC來列舉需要匹配的來源IP:
acl "SD_CTC" { 58.56.0.0/15; 58.58.0.0/16; 58.59.0.0/17; 60.235.0.0/16; 122.4.0.0/14; 123.168.0.0/14; 222.173.0.0/16; 222.174.0.0/15; };
然后再用view/SD_CTC來調用acl/SD_CTC的內容:
view "view_SD_CTC" { match-clients { #使用match-clients指令,指定匹配來自這些IP的用戶 SD_CTC; #引用acl/SD_CTC的內容 }; include "public.def"; #指定這些IP來源的用戶,使用如下的zone文件提供服務 zone "via.woyodns.com" { type master; file "zone/via.any.zone"; }; zone "web.woyodns.com" { type master; file "zone/web.any.zone"; }; zone "cdn.woyodns.com" { type master; file "zone/cdn.hbjmCTC.zone"; }; };
最后再用named.conf來使其關聯起來生效:
include "acl/SD_CTC"; include "acl/SD_CNC"; include "acl/SD_OTHER"; include "view/SD_CTC"; include "view/SD_CNC"; include "view/SD_OTHER ";
總結起來就是使用acl指令圈定一批來源IP地址,使用view的match-clients匹配該acl,為其分配zone文件用于解析,使用named.conf加載acl和view使其生效。
BIND視圖優化技巧
讀者可以看到,這里面核心的內容是acl/SD_CTC里面的IP地址,也就是IP庫。這些數據哪來的呢?
可以使用如下方法:
·使用純真IP數據庫進行分析。
·使用BIND自帶的log進行分析。分析日志的可行性主要是基于目前國內的開放DNS服務器,數量不多,通過對log的多次分析即可逐步精確地匹配。
使用如下指令配置后,BIND的請求數據會記錄在/var/query.log:
channel query_log { file "/var/query.log" versions 5 size 20m; severity info; print-time yes; print-category yes; }; category queries{ query_log; };
其中一條日志如下:
04-Jan-2016 11:35:29.478 queries: client 210.51.28.230#52147 (www99.xufeng.info): query: www99.xufeng.info IN A +E (192.243.119.145)
其中210.51.28.230是某臺開放域名服務器的地址,通過使用http://www.cnnic.cn/即可查詢出該IP地址的運營商和地區等情況,然后將相關信息添加到對應的acl中。
注意
BIND視圖技術所依據的來源IP地址,并不是訪問網站等的終端用戶的來源地址,而是這些終端用戶配置的本地DNS服務器。如果山東省聯通用戶配置了上海市電信提供的DNS服務器,則可能會被調度到電信站點,出現偏差。
- Getting Started with oVirt 3.3
- UNIX操作系統設計
- 白話區塊鏈
- Hands-On DevOps with Vagrant
- 嵌入式應用程序設計綜合教程(微課版)
- Linux性能優化
- Linux系統安全基礎:二進制代碼安全性分析基礎與實踐
- 細說Linux基礎知識
- Ceph分布式存儲實戰
- INSTANT Migration from Windows Server 2008 and 2008 R2 to 2012 How-to
- Fedora 12 Linux應用基礎
- Multi-Cloud for Architects
- Mastering Azure Serverless Computing
- Unity AR/VR開發:實戰高手訓練營
- Instant Responsive Web Design