一、定義
lvs它是一種集群(cluster)技術,採用ip負載均衡技術和基於內容請求分發技術。排程器具有很好的吞吐率,將請求均衡地轉移到不同的伺服器上執行,且排程器自動遮蔽掉伺服器的故障,從而將一組伺服器構成乙個高效能的、高可用的虛擬伺服器。整個伺服器集群的結構對客戶是透明的,而且無需修改客戶端和伺服器端的程式。
二、實現方式:
1) nat模式:
原理:就是把客戶端發來的資料報的ip頭的目的位址,在負載均衡器上換成其中一台真機伺服器的ip位址,併發至此真機伺服器來處理,真機伺服器處理完成後把資料交給經過負載 均衡器,負載均衡器再把資料報的原ip位址改為自己的ip,將目的位址改為客戶端ip位址即可。期間,無論是進來的流量,還是出去的流量,都必須經過負載 均衡器。
優點:集群中的物理伺服器可以使用任何支援tcp/ip作業系統,只有負載均衡器需要乙個合法的ip位址。
缺點:擴充套件性有限。當伺服器節點(普通pc伺服器)增長過多時,負載均衡器將成為整個系統的瓶頸,因為所有的請求包和應答包的流向都經過負載均衡器。當伺服器節點過多時,大量的資料報都交匯在負載均衡器那,速度就會變慢!
2)ip隧道模式(vs-tun)
原理:首先要知道,網際網路上的大多internet服務的請求包很短小,而應答包通常很大。那麼隧道模式就是,把客戶端發來的資料報,封裝乙個新的ip頭 標記(僅目的ip)發給真機伺服器,真機伺服器收到後,先把資料報的頭解開,還原資料報,處理後,直接返回給客戶端,不需要再經過負載均衡器。注意,由於真機度**需要對負 載均衡器發過來的資料報進行還原,所以說必須支援iptunnel協議。所以,在真機伺服器的核心中,必須編譯支援iptunnel這個選項
優點:負載均衡器只負責將請求包分發給後端節點伺服器,而真機伺服器將應答包直接發給使用者。所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量,這種方式,一台負載均衡器能夠為很多真機伺服器進行分發。而且跑在公網上就能進行不同地域的分發。
缺點:隧道模式的真機伺服器節點需要合法ip,這種方式需要所有的伺服器支援」ip tunneling」(ip encapsulation)協議,伺服器可能只侷限在部分linux系統上。
3)直接路由模式
原理:負載均衡器和rs都使用同乙個ip對外服務。但只有dr對arp請求進行響應,所有rs對本身這個ip的arp請求保持靜默。也就是說,閘道器會把對 這個服務ip的請求全部定向給dr,而dr收到資料報後根據排程演算法,找出對應的rs,把目的mac位址改為rs的mac(因為ip一致)並將請求分發給 這台rs。這時rs收到這個資料報,處理完成之後,由於ip一致,可以直接將資料返給客戶,則等於直接從客戶端收到這個資料報無異,處理後直接返回給客戶 端。由於負載均衡器要對二層包頭進行改換,所以負載均衡器和rs之間必須在乙個廣播域,也可以簡單的理解為在同一臺交換機上。
優點:和tun(隧道模式)一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。與vs-tun相比,vs-dr這種實現方式不需要隧道結構,因此可以使用大多數作業系統做為物理伺服器。
缺點:要求負載均衡器的網絡卡必須與物理網絡卡在乙個物理段上。
排程演算法
lvs 的負載排程演算法 在核心中的連線排程演算法上,ipvs 已實現了以下八種排程演算法
1、 輪調排程(roundrobin scheduling )
(1)輪叫的方式依次將請求排程不同的伺服器
(2)演算法的優點是其簡潔性,它無需記錄當前所有連線的狀態,所以它是一種無狀態排程。
2、加權輪叫排程(weighted roundrobin scheduling )
(1)解決伺服器間效能不一的情況,
(2)按權值的高低和輪叫方式分配請求到各伺服器。權值高的伺服器先收到的連線,權值高的服 務器比權值低的伺服器處理更多的連線,相同權值的伺服器處理相同數目的連線數。
3、最小連線排程(leastconnection scheduling )
(1)把新的連線請求分配到當前連線數最小的伺服器。
(2)一種動態排程演算法,它通過伺服器當前所活躍的連線數來估計服
務 器的負載情況。排程器需要記錄各個伺服器已建立連線的數目,當乙個請求被排程到某台伺服器,其連線數加 1;當連線中止或超時,其連線數減一。
4、加權最小連線排程(weighted leastconnection scheduling)
(1)最小連線排程的超集,各個伺服器用相應的權值表示其處理效能。
(2)伺服器的預設權值為1,系統管理員可以動態地設定伺服器的權 值。
(3)加權最小連線排程在排程新連線時盡可能使伺服器的已建立連線數和其權值成比例。
5、基於區域性性的最少鏈結(localitybased least connections scheduling )
(1)簡稱lblc演算法,針對請求報文的目標 ip 位址的負載均衡排程,目前主要用於 cache 集群系統,因為在 cache 集群中 客戶請求報文的目標 ip 位址是變化的。
(2)假設任何後端伺服器都可以處理任一請求,演算法的設計目標是在伺服器的負載基本平衡情況下,將相同目標ip位址的請求排程到同一臺伺服器,來提高各台伺服器的訪問區域性性和主存 cache 命中率,從而整個集群系統的處理能力。
(3)lblc排程演算法先根據請求的目標ip位址找出該目標ip位址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求傳送到該伺服器;若伺服器不 存在,或者該伺服器超載且有伺服器處於其一半的工作負載,則用 「 最少鏈結 」 的原則選出乙個可用的伺服器,將請求傳送到該伺服器。
6、帶複製的基於區域性性最少鏈結(localitybased least connections with replication scheduling)
(1)簡稱 lblcr演算法,也是針對目標 ip 位址的負載均衡,目前主要用於 cache集群系統。它與 lblc 演算法的不同之處是它要維護從乙個目標 ip 位址到一組伺服器的對映。
(2)lblcr 演算法先根據請求的目標 ip 位址找出該目標 ip 位址對應的伺服器組;按 「 最小連線 」 原則從該伺服器組中選出一台伺服器,若伺服器沒有超載,將請求傳送到該伺服器;若伺服器超載;則按 「 最小連線 」 原則從整個集群中選出一台伺服器,將該伺服器加入到伺服器組中,將請求傳送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的服 務器從伺服器組中刪除,以降低複製的程度。
7、目標位址雜湊排程(destination hashing scheduling)
(1)針對目標 ip 位址的負載均衡,但它是一種靜態對映演算法,通過乙個雜湊(hash)函式將乙個目標 ip 位址對映到一台伺服器。
(2)目標位址雜湊排程演算法先根據請求的目標 ip 位址,作為雜湊鍵(hash key)從靜態分配的雜湊表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
8、源位址雜湊排程(source hashing scheduling)
(1)源位址雜湊排程(source hashing scheduling)演算法正好與目標位址雜湊排程演算法相反
(2)它根據請求的源 ip 位址,作為雜湊鍵(hash key)從靜態分配的雜湊表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
(3)它採用的雜湊函式與目標位址雜湊排程演算法 的相同。它的演算法流程與目標位址雜湊排程演算法的基本相似,除了將請求的目標 ip 位址換成請求的源 ip 位址。
(4)在實際應用中,源位址雜湊排程和目標位址雜湊排程可以結合使用在防火牆集群中,它們可以保證整個系統的唯一出入口。
LVS負載均衡原理
實現lvs負載均衡 方式有三種,分別為nat dr tun模式,lvs常見演算法包括rr lc wrr wlc等 lvs nat原理 使用者請求lvs到達director,director將請求的報文的目標ip位址改成後端的realserver ip位址,同時將報文的目標埠也改成後端選定的reals...
LVS負載均衡工作模式和排程演算法
一 lvs簡介 lvs linux virtual server 即linux虛擬伺服器,是由章文嵩博士主導的開源負載均衡專案,目前lvs已經被整合到linux核心模組中。該專案在linux核心中實現了基於ip的資料請求負載均衡排程方案,其體系結構如圖1所示,終端網際網路使用者從外部訪問公司的外部負...
lvs工作方式和排程演算法
lvs工作原理可以簡單理解為 lvs工作在核心空間,本身工作在input鏈上,與iptable不能同時用。lvs ipvsadm 管理集群服務的工具,用來寫規則 ipvs 工作在核心。工作原理 1 當使用者向負載均衡器發出請求時,排程器將請求發往核心空間 2 prerouting鏈會首先接收使用者的...