Load Balance實現方法

1.基於 DNS run repeating

最早的負載均衡技術是通過DNS服務中的隨機名字解析來實現的,在DNS服務器中,可以爲多個不同的 地址配置同一個名字,而最終查詢這個名字的客戶機將在解析這個名字時得到其中的一個地址。因此,對於同一個名字,不同的客戶機會得到不同的地址,他們也就 訪問不同地址上的Web服務器,從而達到負載均衡的目的。

me:利用一個DNS域名對應多個ip地址,我想一則DNS對應的ip數量有最大值,二如果直接訪問ip不能體現loadbanance

例如如果希望使用三個Web服務器來回應對www.exampleorg.org.cn的HTTP請求,就可以設置該域的DNS服務器中關於該域的數據包括有與下面例子類似的結果:
www N A 192.168.1.1

    www2   IN   A    192.168.1.2

    www3   IN   A    192.168.1.3

    www   IN   CNAME   www1

    www   IN   CNAME   www2

    www   IN   CNAME   www3

此後外部的客戶機就可能隨機的得到對應www的不同地址,那麼隨後的HTTP請求也就發送給不同地址了。

DNS 負載均衡的優點是簡單、易行,並且服務器可以位於互聯網的任意位置上,當前使用在包括Yahoo在內的Web站點上。然而它也存在不少缺點,一個缺點是爲 了保證DNS數據及時更新,一般都要將DNS的刷新時間設置的較小,但太小就會造成太大的額外網絡流量,並且更改了DNS數據之後也不能立即生效;第二點 是DNS負載均衡無法得知服務器之間的差異,它不能做到爲性能較好的服務器多分配請求,也不能瞭解到服務器的當前狀態,甚至會出現客戶請求集中在某一臺服 務器上的偶然情況。

2.基於Reverse Proxy Loan Balance

使用代理服務器可以將請求轉發給內部的Web服務器,使用這種加速模式顯然可以提升靜態網頁的訪問速度。因此也可以考慮使用這種技術,讓代理服務器 將請求均勻轉發給多臺內部Web服務器之一上,從而達到負載均衡的目的。這種代理方式與普通的代理方式有所不同,標準代理方式是客戶使用代理訪問多個外部 Web服務器,而這種代理方式是多個客戶使用它訪問內部Web服務器,因此也被稱爲反向代理模式。

實現這個反向代理能力並不能算是一個特別複雜的任務,但是在負載均衡中要求特別高的效率,這樣實現起來就不是十分簡單的了。每針對一次代理,代理服 務器就必須打開兩個連接,一個爲對外的連接,一個爲對內的連接,因此對於連接請求數量非常大的時候,代理服務器的負載也就非常之大了,在最後反向代理服務 器會成爲服務的瓶頸。例如,使用Apache的mod_rproxy模塊來實現負載均衡功能時,提供的併發連接數量受Apache本身的併發連接數量的限 制。一般來講,可以使用它來對連接數量不是特別大,但每次連接都需要消耗大量處理資源的站點進行負載均衡,例如搜尋。

使用反向代理的好處是,可以將負載均衡和代理服務器的高速緩存技術結合在一起,提供有益的性能,具備額外的安全性,外部客戶不能直接訪問真實的服務 器。並且實現起來可以實現較好的負載均衡策略,將負載可以非常均衡的分給內部服務器,不會出現負載集中到某個服務器的偶然現象。

me:這樣這個代理服務器需要分發請求,負擔比較大

3.基於NAT Load Balance

網絡地址轉換爲在內部地址和外部地址之間進行轉換,以便具備內部地址的計算機能訪問外部網絡,而當外部網絡中的計算機訪問地址轉換網關擁有的某一外 部地址時,地址轉換網關能將其轉發到一個映射的內部地址上。因此如果地址轉換網關能將每個連接均勻轉換爲不同的內部服務器地址,此後外部網絡中的計算機就 各自與自己轉換得到的地址上服務器進行通信,從而達到負載分擔的目的。

地址轉換可以通過軟件方式來實現,也可以通過硬件方式來實現。使用硬件方式進行操作一般稱爲交換,而當交換必須保存TCP連接信息的時候,這種針對 OSI 網絡層的操作就被稱爲第四層交換。支持負載均衡的網絡地址轉換爲第四層交換機的一種重要功能,由於它基於定製的硬件芯片,因此其性能非常優秀,很多交換機 聲稱具備400MB-800MB的第四層交換能力,然而也有一些資料表明,在如此快的速度下,大部分交換機就不再具備第四層交換能力了,而僅僅支持第三層 甚至第二層交換。軟件方法是使用免費的自由軟件來完成這項任務。其中包括Linux Virtual Server Project中的NAT實現方式,或者在FreeBSD下natd、PF實現方式。

me:網絡地址轉換 (NAT) 是一個 Internet IETF 標準,用於允許專用網絡上的多臺 PC (使用專用地址段,例如 10.0.x.x、192.168.x.x、172.x.x.x) 共享單個、全局路由的 IPv4 地址。IPv4 地址日益不足是經常部署 NAT 的一個主要原因。Windows XP 和 Windows Me 中的“Internet 連接共享”及許多Internet 網關設備都使用 NAT,尤其是在通過 DSL 或電纜調制解調器連接寬帶網的情況下。

4.DSR(Direct Server Retun)Load Balance

上面使用網絡地址轉換來實現負載分擔,毫無疑問所有的網絡連接都必須通過中心負載均衡器,那麼如果負載特別大,以至於後臺的服務器數量不再在是幾 臺、十幾臺,而是上百臺甚至更多,即便是使用性能優秀的硬件交換機也會遇到瓶頸。此時問題將轉變爲,如何將那麼多臺服務器分佈到各個互聯網的多個位置,分 散網絡負擔。當然這可以通過綜合使用DNS和NAT兩種方法來實現,然而更好的方式是使用一種半中心的負載均衡方式。

在這種半中心的負載均衡方式下,即當客戶請求發送給負載均衡器的時候,中心負載均衡器將請求打包併發送給某個服務器,而服務器的迴應請求不再返回給中心負載均衡器,而是直接返回給客戶,因此中心負載均衡器只負責接受並轉發請求,其網絡負擔就較小了。

上圖來自Linux Virtual Server Project,爲他們使用IP隧道實現的這種負載分擔能力的請求/迴應過程,此時每個後臺服務器都需要進行特別的地址轉換,以欺騙瀏覽器客戶,認爲它的迴應爲正確的迴應。

這種方式的硬件實現方式也非常昂貴,但是會根據廠商的不同,具備不同的特殊功能,例如對SSL的支持等。我所用到的就是這種方法,DSR+PR來實現負載均衡。

比較上面的負載均衡方式,DNS最容易,也最常用,能夠滿足一般的需求。但如果需要進一步的管理和控制,可以選用反向代理方式或NAT方式,如果訪問量很大而且經濟條件許可的狀況下還是選擇DSR+RP方式比較好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章