LVS是什么?
LVS是基于4層的負載均衡技術,它是Linux內核的一個模塊。
LVS的四種模式:
1)NAT模式
客戶端訪問LVS時,LVS通過重寫請求報文的目標地址,且根據預設的調度算法,將請求分派給后端真實服務器,真實服務器接收到請求處理后,發出響應報文也需要通過LVS返回,返回時需要修改報文的源地址,然后返回給客戶,完成整個負載調度過程。
NAT 模式就是使用 SNAT(目標地址轉換,改變的是目標地址) 和 DNAT(源地址轉換,改變的是源地址) 技術完成報的轉發,NAT 方式可支持任何的操作系統,以及私有網絡,并且只需一個 Internet IP 地址,非常節省成本,但是整個系統的性能受到限制。
因為執行 NAT 每次需要重寫數據包,有一定的延遲,另外,大部分應用有 80%的數據是從服務器流向客戶機,也就是用戶的請求非常短,而服務器的回應非常大,對LVS形成很大壓力,容易成為瓶頸。
2)IP TUN模式
IP TUN(IP Tunneling 即 IP隧道)當 LVS 分配請求到不同的 real server,real server 處理請求后直接回應給用戶,這樣 LVS 僅處理客戶機與服務器的一半連接。IP TUN 技術極大地提高了 LVS 的調度處理能力,同時也極大地提高了系統能容納的最大節點數,可以超過 100 個節點。
real server 可以在任何 LAN 或 WAN 上運行,這意味著允許地理上的分布,這在災難恢復中有重要意義。但此模式要求所有服務器必須支持 IP 隧道協議,因此只能在 linux 下使用,在 windows 無法使用此模式下,關鍵步驟:LB會重新封裝從客戶端發來的包,封裝后的包目標IP為其中一個Real Server。
3)DR模式
DR(即 Direct Routing 直接路由)與 IP TUN 類似,負載均衡器僅處理一半的連接,避免了新的性能瓶頸,同樣增加了系統的可伸縮性,DR 與 IP TUN 相比,沒有 IP 封裝的開銷,但由于采用物理層(修改 MAC地址)技術,所有服務器都必須在同一個局域網 DR 與 IP TUN 相比,沒有 IP 封裝的開銷,但由于采用數據鏈路層(修改 MAC地址)技術,所有服務器都必須在一個物理網段。
此模式下,關鍵步驟:LB會修改從客戶端發過來的包里的MAC地址,將MAC地址修改為其中某一個Real Server的mac地址。
4)FULL NAT模式
這種模式為NAT模式的升級版。 傳統的NAT模式,LB和RS必須在同一個VLAN下,否則LB無法作為RS的網關。 這引發的兩個問題是:
同一個 VLAN的限制導致運維不方便,跨VLAN的RS無法接入。
當RS橫向擴容時,總有一天其上的單點LB會成為瓶頸。
Full-NAT解決的是LB和RS跨VLAN的問題,而跨VLAN問題解決后,LB和RS不再存在VLAN上的從屬關系,可以做到多個LB對應多個RS,解決水平擴容的問題。 Full-NAT相比NAT的主要改進是,在SNAT/DNAT的基礎上,加上另一種轉換,轉換過程如下:
在包從LB轉到 RS 的過程中,源地址從客戶端IP被替換成了LVS 的內網IP。內網IP之間可以通過多個交換機跨VLAN通信。
當RS處理完接收到的包,返回時,會將這個包返回給LB的內網IP,這一步也不受限于 VLAN。
LB收到包后,在NAT模式修改源地址的基礎上,再把RS發來的包中的目標地址從LB內網IP改為客戶端的 IP。
Full-NAT主要的思想是把網關和其下機器的通信,改為了普通的網絡通信,從而解決了跨VLAN 的問題。采用這種方式,LB和RS的部署在VLAN上將不再有任何限制,大大提高了運維部署的便利性。
LVS的十種調度算法:
LVS的調度算法分為靜態與動態兩類。
1)靜態算法(4種):只根據算法進行調度 而不考慮后端服務器的實際連接情況和負載情況
① RR:輪詢調度(Round Robin) 調度器通過”輪詢”調度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載?
② WRR:加權輪詢(Weight RR) 調度器通過“加權輪叫”調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,并動態地調整其權值。
③ DH:目標地址hash(Destination Hash ) 根據請求的目標IP地址,作為散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
④ SH:源地址 hash(Source Hash) 根據請求的源IP地址,作為散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空?
2)動態算法(6種):前端的調度器會根據后端真實服務器的實際連接情況來分配請求
① LC:最少鏈接(Least Connections) 動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集群系統的真實服務器具有相近的系統性能,采用”最小連接”調度算法可以較好地均衡負載。
② WLC:加權最少連接(默認采用的就是這種)(Weighted Least Connections) 在集群系統中的服務器性能差異較大的情況下,調度器采用“加權最少鏈接”調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載?調度器可以自動問詢真實服務器的負載情況,并動態地調整其權值。
③ SED:最短延遲調度(Shortest Expected Delay ) 在WLC基礎上改進,Overhead = (ACTIVE+1)*256/加權,不再考慮非活動狀態,把當前處于活動狀態的數目+1來實現,數目最小的,接受下次請求,+1的目的是為了考慮加權的時候,非活動連接過多缺陷:當權限過大的時候,會導致空閑服務器一直處于無連接狀態。
④NQ永不排隊/最少隊列調度(Never Queue Scheduling NQ) 無需隊列。如果有臺 realserver的連接數=0就直接分配過去,不需要再進行sed運算,保證不會有一個主機很空閑。在SED基礎上無論+幾,第二次一定給下一個,保證不會有一個主機不會很空閑著,不考慮非活動連接,才用NQ,SED要考慮活動狀態連接,對于DNS的UDP不需要考慮非活動連接,而httpd的處于保持狀態的服務就需要考慮非活動連接給服務器的壓力。
⑤ LBLC:基于局部性的最少鏈接(locality-Based Least Connections) 基于局部性的最少鏈接”調度算法是針對目標IP地址的負載均衡,目前主要用于Cache集群系統?該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處于一半的工作負載,則用“最少鏈接”的原則選出一個可用的服務器,將請求發送到該服務器?
⑥ LBLCR:帶復制的基于局部性最少連接(Locality-Based Least Connections with Replication) 帶復制的基于局部性最少鏈接”調度算法也是針對目標IP地址的負載均衡,目前主要用于Cache集群系統?它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射?該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按”最小連接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集群中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器?同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。
審核編輯:劉清
-
服務器
+關注
關注
12文章
9335瀏覽量
86138 -
Mac
+關注
關注
0文章
1110瀏覽量
51748 -
LVS
+關注
關注
1文章
36瀏覽量
9978 -
LINUX內核
+關注
關注
1文章
316瀏覽量
21751 -
STUN
+關注
關注
0文章
2瀏覽量
5889
原文標題:LVS四種工作模式和十種算法
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
請問怎么做一個跑馬燈有十種模式,第十種模式有三種音樂,可加速減速和無線遙控?
非規則矩形電阻在Calibre LVS中阻值提取
基于LVS的動態反饋調度算法研究
![基于<b class='flag-5'>LVS</b>的動態反饋<b class='flag-5'>調度</b><b class='flag-5'>算法</b>研究](https://file.elecfans.com/web2/M00/49/61/pYYBAGKhtEqABX2bAAAQhZCFWA0210.jpg)
超詳細!使用 LVS 實現負載均衡原理及安裝配置詳解
十種不同模式實現簡單的計算案例
![<b class='flag-5'>十種</b>不同<b class='flag-5'>模式</b>實現簡單的計算案例](https://file.elecfans.com/web1/M00/CB/60/o4YBAF-RAA2AZIIbAAAOaUE5BXE799.png)
四種常見的圖像濾波算法介紹
基于Cadence軟件DRACULA工具的LVS檢查
![基于Cadence軟件DRACULA工具的<b class='flag-5'>LVS</b>檢查](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DS75LVS+ DS75LVS+ - (Maxim Integrated) - 溫度傳感器 - 模擬和數字輸出
![DS75<b class='flag-5'>LVS</b>+ DS75<b class='flag-5'>LVS</b>+ - (Maxim Integrated) - 溫度傳感器 - 模擬和數字輸出](https://file.elecfans.com/web2/M00/70/70/pYYBAGNH-I2AMV23AAAJwg3rnZc603.png)
物理驗證LVS對bulk(體)的理解和處理技巧
![物理驗證<b class='flag-5'>LVS</b>對bulk(體)的理解和處理技巧](https://file1.elecfans.com/web2/M00/89/A7/wKgaomSJYPGAOY9LAAIzzjK_BQc930.jpg)
GPIO的四種輸入模式介紹
![GPIO的<b class='flag-5'>四種</b>輸入<b class='flag-5'>模式</b><b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/AD/43/wKgaomVMnCSAPn9LAABngG_i5x4569.jpg)
介紹MCUboot支持的四種升級模式(2)
![<b class='flag-5'>介紹</b>MCUboot支持的<b class='flag-5'>四種</b>升級<b class='flag-5'>模式</b>(2)](https://file1.elecfans.com/web2/M00/ED/3D/wKgZomZqYEaAPADEAAASpmPiNNM002.png)
評論