實現基於DNS的負載均衡

2021-09-30 11:31:09 字數 1551 閱讀 3683

使用多台伺服器平衡負載是乙個不錯的想法,你可以在你的伺服器池中隨意增加多台伺服器來提高伺服器的效能和增強網路的穩定性。如果你的伺服器池中有多台伺服器,當一台down機後,其他伺服器可以接替它的工作,繼續提供服務而不至於造成服務中斷。

通過使用rr-dns(round-robin domain name system)可以實現平衡負載的功能,向乙個主機名發出的入站請求可以被**到多個ip位址上。

在bind9中實現此功能就向新增一條a記錄那麼簡單。舉例說,如果我們向somode.com區域檔案中加入下面行便可實現:

www  

60 in 

a  220.181.11.124

60 in 

a  220.181.11.125

當然你還可以根據需要加入更多伺服器。這樣如果有人請求解析www.somode.com時將有一半的機率解析到220.181.11.124上,而另一半會解析到220.181.11.125上。

然而,使用rr-dns方法實現負載平衡也會帶來一些問題:

第一,網域名稱伺服器是乙個分布式系統,是按照一定的層次結構組織的。當使用者將網域名稱解析請求提交給本地的網域名稱伺服器,它會因不能直接解析而向上一級網域名稱伺服器提交,上一級網域名稱伺服器再依次向上提交,直到rr-dns 網域名稱伺服器把這個網域名稱解析到其中一台伺服器的ip 位址。可見,從使用者到rr-dns 間存在多台網域名稱伺服器,而它們都會緩衝已解析的名字到ip 位址的對映,這會導致該網域名稱伺服器組下所有使用者都會訪問同一web 伺服器,出現不同web 伺服器間的負載不平衡。為了保證在網域名稱伺服器中網域名稱到ip 位址的對映不被長久緩衝,rr-dns 在網域名稱到ip 位址的對映上設定乙個ttl(time to live)值,過了這一段時間,網域名稱伺服器將這個對映從緩衝中淘汰。當使用者請求,它會再向上一級網域名稱伺服器提交請求並進行重新對映。這就涉及到如何設定這個ttl值,若這個值太大,在這個ttl 期間,很多請求會被對映到同一臺web 伺服器上,同樣會導致負載不平衡。若這個值太小,例如是0,會導致本地網域名稱伺服器頻繁地向rr-dns提交請求,增加了網域名稱解析的網路流量,同樣會使rr-dns 成為系統中乙個新的瓶頸。

第二,使用者機器會緩衝從名字到ip 位址的對映,而不受ttl 值的影響,使用者的訪問請求會被送到同一臺web 伺服器上。由於使用者訪問請求的突發性和訪問方式不同,例如有的人訪問一下就離開了,而有的人訪問可長達幾個小時,所以各台伺服器間的負載仍存在傾斜(skew)而不能控制。假設使用者在每個會話中平均請求數為20,負載最大的伺服器獲得的請求數額高於各伺服器平均請求數的平均比率超過百分之三十。也就是說,當ttl 值為0 時,因為使用者訪問的突發性也會存在著較嚴重的負載不平衡。

第三,系統的可靠性和可維護性不好。若一台伺服器失效,會導致將網域名稱解析到該伺服器的使用者看到服務中斷,即使使用者按「reload」按鈕,也無濟於事。系統管理員也不能隨時地將一台伺服器切出服務進行維護,如進行作業系統和應用軟體公升級,這需要修改rr-dns 伺服器中的ip 位址列表,把該伺服器的ip 位址從中劃掉,然後等上一段時間,等所有網域名稱伺服器將該網域名稱到這台伺服器的對映淘汰,和所有對映到這台伺服器的客戶機不再使用該站點為止。

基於DNS的負載均衡

基於dns的負載均衡 最早的負載均衡技術是通過dns服務中的隨機名字解析來實現的。在dns伺服器中,可以為多個不同的位址配置同乙個名字,這個資料被傳送給其他名字伺服器,而最終查詢這個名字的客戶機將在解析這個名字時隨機使用其中乙個位址。因此,對於同乙個名字,不同的客戶機會得到不同的位址,因此不同的客戶...

基於DNS的負載均衡

基於dns的負載均衡 負載均衡技術能夠平衡伺服器集群中所有的伺服器和請求應用之間的通訊負載,根據實時響應時間進行判斷,將任務交由負載最輕的伺服器來處理,以實現真正的智慧型通訊管理和最佳的伺服器群效能,從而使 始終保持執行和保證其可訪問性。為了充分利用現有伺服器軟體的種種優勢,負載均衡最好是在伺服器軟...

DNS負載均衡

dns負載均衡技術的實現原理是在 dns伺服器中為同乙個主機名配置多個 ip位址,在應答 dns查詢時,dns伺服器對每個查詢將以 dns檔案中主機記錄的 ip位址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的伺服器,從而達到負載均衡的目的。直到現在,很多 ...