DNS負載平衡技術是在DNS伺服器中為同一個主機名稱配置多個IP地址,在應答DNS查詢時,DNS伺服器對每個查詢將以DNS檔案中主機記錄的IP地址按順序返回不同的解析結果,將用戶端的訪問引導到不同的機器上去,使得不同的用戶端訪問不同的伺服器,從而達到負載平衡的目的。
DNS負載平衡的優點是經濟簡單易行,並且伺服器可以位於internet上任意的位置。但它也存在不少缺點:
為了使本DNS伺服器和其他DNS伺服器及時互動,保證DNS資料及時更新,使地址能隨機分配,一般都要將DNS的重新整理時間設定的較小,但太小將會使DNS流量大增造成額外的網路問題。
一旦某個伺服器出現故障,即使及時修改了DNS設定,還是要等待足夠的時間(重新整理時間)才能發揮作用,在此期間,儲存了故障伺服器位址的客戶電腦將不能正常訪問伺服器。
DNS負載平衡採用的是簡單的輪循負載演算法,不能區分伺服器的差異,不能反映伺服器的當前運行狀態,不能做到為效能較好的伺服器多分配請求,甚至會出現客戶請求集中在某一台伺服器上的情況。
要給每台伺服器分配一個internet上的IP地址,這勢必會佔用過多的IP地址。
判斷一個網站是否採用了DNS負載平衡的最簡單方式就是連續的ping這個網域名稱,如果多次解析返回的IP地址不相同的話,那麼這個網站就很可能採用的就是較為普遍的DNS負載平衡。但也不一定,因為如果採用的是DNS響應均衡,多次解析返回的IP地址也可能會不相同。不妨試試Ping一下www.yesky.com,www.sohu.com,www.yahoo.com。
現假設有三台伺服器來應對www.test.com的請求。
在NT下的實現也很簡單,下面詳細介紹在win2000 server下實現DNS負載平衡的過程,NT4.0類似:
開啟“管理工具”下的“DNS”,進入DNS服務配置控制台。
開啟相應DNS 伺服器的“屬性”,在“進階”選項卡的“伺服器選項”中,選中“啟用迴圈”複選框。此步相當於在註冊表記錄HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/DNS/Parameters中添加一個雙位元組制值(dword值)RoundRobin,值為1。
開啟正向搜尋地區的相應地區(如test.com),建立主機添加主機 (A) 資源記錄,記錄如下:
www IN A 192.1.1.1
www IN A 192.1.1.2
www IN A 192.1.1.3
在這裡可以看到的區別是在NT下一個主機名稱對應多個IP地址記錄,但在unix下,是先添加多個不同的主機名稱分別對應個自的IP地址,然後再把這些主機賦同一個別名(CNAME)來實現的。
在此需要注意的是,NT下本地子網優先順序會取代多重主機名稱的迴圈複用,所以在測試時,如果做測試用的客戶機IP地址與主機資源記錄的IP在同一有類掩碼範圍內,就需要清除在“進階”選項卡“伺服器選項”中的“啟用netmask排序”。