負載均衡的方案

2021-07-13 11:06:04 字數 2214 閱讀 8495

負載均衡:在計算機集群、網路連線、cpu、磁碟驅動器或其他資源中分配負載,以達到最佳化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。

負載均衡既可以採用硬體實現,也可以採用軟體實現。比較知名的f5負載均衡器,就是基於硬體實現的,效能上優於大部分軟體方式,不過成本也比較昂貴。大部分使用者都會選用軟體實現的方式來解決。

(下面來自網路)

這種適用於web伺服器,負載均衡器根據http請求,計算出實際伺服器位址,通過302重定向,使用者再去請求實際的伺服器位址。這種方案比較簡單,但效能較差,需要2次請求才能返回結果。目前一般都不會採用這種方式了。

在dns中儲存實際主機ip,網域名稱解析的時候,根據負載均衡演算法返回匹配的ip位址。

這種方案的優點是負載均衡由dns來完成工作,對伺服器是透明的,伺服器本身不用維護負載均衡。

缺點是負載均衡不是伺服器維護,無法精細控制,dns在客戶端往往有快取,伺服器的變更,出問題等很難及時反映到客戶端上。

反向**伺服器解析客戶端請求,根據負載均衡演算法**到不同的伺服器,使用者和後台伺服器不再有直接的連線。請求、響應都由反向**伺服器進行**。

優點是整合在一起,部署簡單。

缺點是所有請求響應都要經過反向**伺服器,其本身可能成為效能的瓶頸。

如nginx就可以部署為反向**伺服器。

上面的反向**屬於應用層的負載均衡,而ip負載均衡屬於網路層。

使用者請求包到達負載均衡伺服器,在作業系統核心層獲取網路包,根據負載均衡演算法得出後台伺服器位址,修改資料報的源位址、目的位址,**給伺服器,整個過程都在核心層中處理,收到響應包後在修改為正確的源位址、目的位址**給使用者。

優點是整個過程都在核心層處理,具有更好的效能。

缺點是所有響應包都要經過負載均衡伺服器,其網絡卡頻寬很容易成為系統的瓶頸。

上面的方法時在網路層來處理,而資料鏈路層負載均衡就是在tcp/ip協議中的最底層進行負載均衡了。

該方法通過修改資料報文的mac位址來實現負載均衡。在伺服器集群中所有機器虛擬ip和負載均衡伺服器ip一致,達到不用修改源位址和目的位址就能進行資料分發。這種方式又稱為直接路由方式。

目前使用最廣泛的一種方式就是資料鏈路層負載均衡,如lvs(linux virtual server)同時支援ip負載均衡和資料鏈路層負載均衡。

經典的8種負載均衡演算法

輪詢排程

按順序輪流分配到真實伺服器上,均等地對待每台伺服器,不管伺服器的實際連線數和系統負載。

加權輪詢

根據伺服器的不同處理能力來排程請求。保證處理能力強的伺服器處理更多訪問流量。排程器動態地調整權值。

最少連線

動態地將請求排程到已建立連線數最好的伺服器上。如果集群伺服器的效能相近,採用這種方式可以較好地負載均衡。

加權最少連線

在伺服器效能差異較大,這種方式比較適合。有較高權值的伺服器承受較大比例的活動連線負載。

基於區域性性的最少連線

先根據目標位址找出最近使用的伺服器,若該伺服器沒超載,將請求傳送到該伺服器上,若伺服器不存在,或超載且處於一半的工作負載,則用「最少連線」選擇乙個可用的伺服器處理請求。

目前主要用於cache集群。

帶複製的基於區域性性最少連線

也是主要用於cache集群。

目標位址雜湊

將請求的目標ip位址作為雜湊鍵,從靜態分配的雜湊表中找出伺服器,若伺服器可用未超載,則由該伺服器處理請求。

源位址雜湊

原理同上,但是將源位址作為雜湊鍵。

負載均衡方案總結

所有的例子都通過訪問www.ctrip.com為例。這裡只講方案,具體的ngix lvs haproxy怎麼工作的等以後細看了再總結。使用者通過網域名稱解析,得到ip位址114.100.80.100,訪問這台伺服器,這台機器收到請求之後,因為它是知道伺服器集群裡的ip的,然後返回乙個重定向到114....

Discuz NT負載均衡方案

在前面的幾篇文章中,主要談到了在discuz nt中的跨站快取資料,資料庫負載均衡。但如果要實現將產品分布式布置到若干機器,組成集群來共同支撐起整個業務的話,還是有一定問題的 後面會有所介紹 下面先介紹一下如何使用 discuz nt負載均衡方案搭建分布式應用。下面這張圖簡要說明在我們產品中ngin...

負載均衡方案總結

負載均衡方案總結 所有的例子都通過訪問www.ctrip.com為例。這裡只講方案,具體的ngix lvs haproxy怎麼工作的等以後細看了再總結。http重定向負載均衡 使用者通過網域名稱解析,得到ip位址114.100.80.100,訪問這台伺服器,這台機器收到請求之後,因為它是知道伺服器集...