負載均衡技術能夠平衡服務器集群中所有的服務器和請求應用之間的通信負載,根據實時響應時間進行判斷,將任務交由負載最輕的服務器來處理,以實現真正的智能通信管理和最佳的服務器群性能,從而使網站始終保持運行和保證其可訪問性。
為了充分利用現有服務器軟件的種種優勢,負載均衡最好是在服務器軟件之外來完成。而最早使用的負載均衡技術是通過DNS服務中的隨機名字解析來實現的。這就是通常所說的DNS負載均衡技術。
DNS負載均衡技術的實現原理是在DNS服務器中為同一個主機名配置多個IP地址,在應答DNS查詢時,DNS服務器對每個查詢將以DNS文件中主機記錄的IP地址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的服務器,從而達到負載均衡的目的。
DNS負載均衡的基本原理
1.dns系統本身是一個分布式的網絡,它是相對可靠的,起碼比你網站本身可靠的多
2.dns的最終解釋是可以受我們自己控制的
有了這兩條結論,剩下的事情就簡單了,我們只需要在最終解釋的查詢結果上做文章就可以了。簡單來說,就是將你的所有服務器地址,按照自己需求制定的頻次,返回給用戶。
以github.com為例,我們首先獲取它的SOA服務器(因為dns緩存查詢服務器會緩存結果,如果你直接去查詢域名,會每次返回一樣的結果),.com的dns域名服務器也是13臺,它們是[a-m].gtld-servers.net,我們隨便選一臺來找找github.com的SOA

OK,我們獲取了四個SOA服務器ns[1-4].p16.dynect.net,再隨便選一個來問問github.com對應的記錄吧,順便試幾次看看最終的ip地址會不會變化

我們這里查詢了兩次,注意ANSWER SECTION部分返回了兩個結果,一次是192.30.252.129,一次是192.30.252.128。
這就是利用dns實現了負載均衡,你的最終訪問會到達不同的ip地址。
有哪些DNS服務商支持負載均衡呢?
這是一種比較高級的服務,一般域名注冊商的dns服務器不會支持,目前我已知支持它的服務商有
1.AWS Route 53
2.NSONE
3.Dyn
4.dnspod
其中1和4是我們已經在使用的,效果比較理想。
直到現在,很多網站仍然使用DNS負載均衡來保證網站的運行和可訪問性。從其實現和效果來看,主要有以下優缺點:
主要優點
這種技術的主要缺點如下:
第一,技術實現比較靈活、方便,簡單易行,成本低,適用于大多數TCP/IP應用。不需要網絡專家來對之進行設定,或在出現問題時對之進行維護。
第二,對于Web應用來說,不需要對代碼作任何的修改。事實上,Web應用本身并不會意識到負載均衡配置,即使在它面前。
第三,Web服務器可以位于互聯網的任意位置上。
主要缺點
DNS負載均衡技術在具有以上優點的時候,其缺點也非常明顯,主要表現在:
第一,不能夠按照Web服務器的處理能力分配負載。DNS負載均衡采用的是簡單的輪循負載算法,不能區分服務器之間的差異,不能反映服務器的當前運行狀態。所以DNS服務器將Http請求平均地分配到后臺的Web服務器上,而不考慮每個Web服務器當前的負載情況。如果后臺的Web服務器的配置和處理能力不同,最慢的 Web服務器將成為系統的瓶頸,處理能力強的服務器不能充分發揮作用。不能做到為性能較好的服務器多分配請求,甚至會出現客戶請求集中在某一臺服務器上的情況。
第二,不支持高可靠性,DNS負載均衡技術沒有考慮容錯。如果后臺的某臺Web服務器出現故障,DNS服務器仍然會把DNS 請求分配到這臺故障服務器上,導致不能響應客戶端。
第三,可能會造成額外的網絡問題。為了使本DNS服務器和其他DNS服務器及時交互,保證DNS數據及時更新,使地址能隨機分配,一般都要將DNS的刷新時間設置的較小,但太小將會使DNS流量大增造成額外的網絡問題。
第四,一旦某個服務器出現故障,即使及時修改了DNS設置,還是要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器。
總結
從上面的總結我們可以看出,總體來說,DNS負載均衡技術方案不應該算是真正意義上的負載均衡,不能夠穩定、可靠、高效地滿足企業對Web服務器的需求,也不能滿足網絡用戶對網站訪問的及時響應和可用性,所以現在很多Web站點方案中,已經很少采用這種方案了。