lvs模式及算法
一、三種模式
(一)、Virtual Servervia Network Address Translation(VS/NAT)
通過網路地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端真實服務器;真實服務器的響應報文通過調度器時,報文的源地址被重寫,在返回給客戶,完成整個負載調度過程。
請求過程:
數據返回:
(二)、Virtual Server via IP Tunneling(VS/TUN)
采用NAT技術時,由於請求和響應報文都必須經過調度器地址重寫,當客戶請求越來越多時,調度器的處理能力將成為瓶頸,為了解決這個問題,調度器把請求報文通過IP隧道轉發至真實服務器,而真實服務器將響應直接反回給客戶,所以調度器只處理請求報文,由於一把網絡服務應答比請求報文大許多,采用VS/TUN技術後,集群系統的最大吞吐量可以提高10倍
(三)、Virtual Server via Direct Routing(VS/DR)
VS/DR通過改寫請求報文的MAC地址,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶,同VS/TUN技術一樣,VS/DR技術可極極大地提高集群系統的伸縮性,這種方法沒有IP隧道的開銷,對集群中的真實服務器都有一塊網卡連在同一物理網段上。
二、十種算法
(一)、輪叫調度
調度器通過“輪叫”調度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的鏈接數和系統負載。
(二)、加權輪叫
調度器通過“加權輪叫”調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。
(三)、最少鏈接
調度器通過“最少鏈接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上,如果集群系統的真實服務器具有相近的系統性能,采用“最少鏈接”調度算法可以比較好地均衡負載。
(四)、加權最少鏈接
在集群系統中的服務器性能差異較大的情況下,調度器采用“加權最小鏈接”調度算法優化負載均衡性能,具有較高權值的服務將承受較大比例的活動鏈接負載,調調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。
(五)、基於局部性的最少鏈接
“基於局部性的最少鏈接”調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集群系統,該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用“最少鏈接”的原則選出一個可用的服務器,將請求發送到該服務器。
(六)、帶復制的基於局部性最少鏈接
“帶復制的基於局部性最少鏈接”調度算法也是針對目標IP 地址的負載均衡,目前主要用於Cache集群系統,它與LBLC算法的不同之處是它要維護從一個目標IP 地址到一個目標IP 地址到一臺服務器的映射,該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按“最少鏈接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小鏈接”原則從這個集群中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器,同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。
(七)、目標地址散列
“目標地址散列”調度算法根據請求的目標IP地址,作為散列鍵(Hash key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
(八)、源地址散列
“源地址散列”調度算發根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
(九)、最短的期望的延遲
基於WLC算法,舉例說明:ABC三臺機器分別千重123,鏈接數也分別是123,那麽如果使用WLC算法的話一個新的請求進入時它可能會分給ABC中任意一個。使用sed算法後會進行這樣一個運算A(1+1)/1 B(1+2)/2 C(1+3)/3根據運算結果,把鏈接交給C。即:(服務器當前鏈接數+1)/權重,比較結果,取最小值
(十)、最少隊列調度
無需隊列,如果有臺realserver的鏈接數=0就直接分配過去,不需要在進行sed運算
lvs模式及算法