Load Balance實現方法

2021-10-07 13:34:48 字數 3003 閱讀 1861

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方式比較好。

負載均衡(Load Balance)

負載均衡 load balance 由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將...

負載均衡 Load Balance

負載平衡 即把負載壓力根據某種演算法合理分配到集群中的每一台計算機上,以減輕主伺服器的壓力,降低對主伺服器的硬體和軟體要求。在現有網路結構之上,負載均衡提供了一種廉價有效的方法擴充套件伺服器頻寬和增加吞吐量,加強網路資料處理能力,提高網路的靈活性和可用性。目前比較常用的負載均衡技術主要有 1.基於d...

獲得Azure訂閱LoadBalancer的指令碼

有客戶希望可以通過一條命令獲得乙個azure訂閱中所有的負載均衡器。目前在azure的powershell中是沒有這中命令的。但我們可以通過指令碼的方式實現。下面就是獲得所有負載均衡的指令碼 param parameter mandatory true string subscriptionid f...