使用負載平衡實現,傳統和常規做法,其他方式需要特殊處理。(dns輪詢,或者自己做解析)
1、一個網域名稱設定多個dns服務或者伺服器進行解析,同一個網域名稱的每個解析都指向不同的ip地址,這樣應答快的dns優先進行解析,這樣就能保證最快定向到指定的網站空間去。如果空間也存在不同地點的相同內容鏡像,那麼這種方式最適合,例如sohu全國都有伺服器,就是這麼乾的,除非你指定要訪問某個地方的伺服器,否則預設轉向最快的空間,因為內容是鏡像自動同步的,內容上不存在差別,使用者是不知道的。一般網域名稱管理機構只允許設定2到3個網域名稱解析服務,所以再多就不支援了。
2、自己公司建立伺服器,給自己進行dns解析服務,這樣容易實現以上功能的操做。且數量不受限制,例如給客戶提供移動、聯通、網通、電信、東方寬頻、長城寬頻等等多個dns,那麼使用對應寬頻使用者都能自動定向到適合自己的網站去,企業可以分別在不同電訊廠商那裡建立網站,保證不同頻寬的使用者都能高速訪問,很多遊戲電訊廠商都是這麼乾的。
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排序”。