歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> LVS三種工作模式、十種調度算法介紹

LVS三種工作模式、十種調度算法介紹

日期:2017/2/27 15:47:47   编辑:Linux教程

工作模式介紹:
1.Virtual server via NAT(VS-NAT)
優點:集群中的物理服務器可以使用任何支持TCP/IP操作系統,物理服務器可以分配Internet的保留私有地址,只有負載均衡器需要一個合法的IP地址。
缺 點:擴展性有限。當服務器節點(普通PC服務器)數據增長到20個或更多時,負載均衡器將成為整個系統的瓶頸,因為所有的請求包和應答包都需要經過負載均 衡器再生。假使TCP包的平均長度是536字節的話,平均包再生延遲時間大約為60us(在Pentium處理器上計算的,采用更快的處理器將使得這個延 遲時間變短),負載均衡器的最大容許能力為8.93M/s,假定每台物理服務器的平台容許能力為400K/s來計算,負責均衡器能為22台物理服務器計 算。

解決辦法:即使是是負載均衡器成為整個系統的瓶頸,如果是這樣也有兩種方法來解決它。一種是混合處理,另一種是采用Virtual Server via IP tunneling或Virtual Server via direct routing。如果采用混合處理的方法,將需要許多同屬單一的RR DNS域。你采用Virtual Server via IP tunneling或Virtual Server via direct routing以獲得更好的可擴展性。也可以嵌套使用負載均衡器,在最前端的是VS-Tunneling或VS-Drouting的負載均衡器,然後後面 采用VS-NAT的負載均衡器。

2.Virtual server via IP tunneling(VS-TUN)
我們發現,許多Internet服務(例如WEB服務器)的請求包很短小,而應答包通常很大。
優 點:負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一台負載均衡能為 超過100台的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個 Virtual Server能達到1G的吞吐量。
缺點:但是,這種方式需要所有的服務器支持"IP Tunneling"(IP Encapsulation)協議,我僅在Linux系統上實現了這個,如果你能讓其它操作系統支持,還在探索之中。

3.Virtual Server via Direct Routing(VS-DR)
優 點:和VS-TUN一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。與VS-TUN相比,VS-DR這種實現方式不需要隧道結 構,因此可以使用大多數操作系統做為物理服務器,其中包括:Linux、Solaris 、FreeBSD 、windows、IRIX 6.5;HPUX11等。
不足:要求負載均衡器的網卡必須與物理網卡在一個物理段上。

三種IP負載均衡技術的優缺點比較:
雜項         VS/NAT     VS/TUN      VS/DR
服務器操作系統    任意      支持隧道     多數(支持Non-arp )
服務器網絡      私有網絡    局域網/廣域網  局域網
服務器數目(100M網絡) 10-20      100       多(100)
服務器網關      負載均衡器   自己的路由    自己的路由
效率         一般      高        最高
調度算法介紹:
1.輪叫調度(Round Robin)(簡稱rr)
調度器通過“輪叫”調度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一台服務器,而不管服務器上實際的連接數和系統負載。

2.加權輪叫(Weighted Round Robin)(簡稱wrr)
調度器通過“加權輪叫”調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器能處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

3.最少鏈接(Least Connections)(LC)
調度器通過“最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集群系統的真實服務器具有相近的系統性能,采用“最小連接”調度算法可以較好地均衡負載。

4.加權最少鏈接(Weighted Least Connections)(WLC)
在集群系統中的服務器性能差異較大的情況下,調度器采用“加權最少鏈接”調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

5.基於局部性的最少鏈接(Locality-Based Least Connections)(LBLC)
“基於局部性的最少鏈接”調 度算法是針對目標IP地址的負載均衡,目前主要用於Cache集群系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是 可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用“最少鏈接” 的原則選出一個可用的服務器,將請求發送到該服務器。

6.帶復制的基於局部性最少鏈接(Locality-Based Least Connections with Replication)(LBLCR)
“帶 復制的基於局部性最少鏈接”調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC算法的不同之處是它要維護從一個目標 IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一台服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器 組,按“最小連接”原則從服務器組中選出一台服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集群中選出一台 服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程 度。

7.目標地址散列(Destination Hashing)(DH)
“目標地址散列”調度算法根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

8.源地址散列(Source Hashing)(SH)
“源地址散列”調度算法根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

9. 最短的期望的延遲(Shortest Expected Delay Scheduling SED)(SED)
基於wlc算法。這個必須舉例來說了
ABC三台機器分別權重123 ,連接數也分別是123。那麼如果使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用sed算法後會進行這樣一個運算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根據運算結果,把連接交給C 。

10.最少隊列調度(Never Queue Scheduling NQ)(NQ)
無需隊列。如果有台 realserver的連接數=0就直接分配過去,不需要在進行sed運算

Copyright © Linux教程網 All Rights Reserved