LVS是什么?
LVS是基于4層的負(fù)載均衡技術(shù),它是Linux內(nèi)核的一個(gè)模塊。
LVS的四種模式:
1)NAT模式
客戶端訪問LVS時(shí),LVS通過重寫請(qǐng)求報(bào)文的目標(biāo)地址,且根據(jù)預(yù)設(shè)的調(diào)度算法,將請(qǐng)求分派給后端真實(shí)服務(wù)器,真實(shí)服務(wù)器接收到請(qǐng)求處理后,發(fā)出響應(yīng)報(bào)文也需要通過LVS返回,返回時(shí)需要修改報(bào)文的源地址,然后返回給客戶,完成整個(gè)負(fù)載調(diào)度過程。
NAT 模式就是使用 SNAT(目標(biāo)地址轉(zhuǎn)換,改變的是目標(biāo)地址) 和 DNAT(源地址轉(zhuǎn)換,改變的是源地址) 技術(shù)完成報(bào)的轉(zhuǎn)發(fā),NAT 方式可支持任何的操作系統(tǒng),以及私有網(wǎng)絡(luò),并且只需一個(gè) Internet IP 地址,非常節(jié)省成本,但是整個(gè)系統(tǒng)的性能受到限制。
因?yàn)閳?zhí)行 NAT 每次需要重寫數(shù)據(jù)包,有一定的延遲,另外,大部分應(yīng)用有 80%的數(shù)據(jù)是從服務(wù)器流向客戶機(jī),也就是用戶的請(qǐng)求非常短,而服務(wù)器的回應(yīng)非常大,對(duì)LVS形成很大壓力,容易成為瓶頸。
2)IP TUN模式
IP TUN(IP Tunneling 即 IP隧道)當(dāng) LVS 分配請(qǐng)求到不同的 real server,real server 處理請(qǐng)求后直接回應(yīng)給用戶,這樣 LVS 僅處理客戶機(jī)與服務(wù)器的一半連接。IP TUN 技術(shù)極大地提高了 LVS 的調(diào)度處理能力,同時(shí)也極大地提高了系統(tǒng)能容納的最大節(jié)點(diǎn)數(shù),可以超過 100 個(gè)節(jié)點(diǎn)。
real server 可以在任何 LAN 或 WAN 上運(yùn)行,這意味著允許地理上的分布,這在災(zāi)難恢復(fù)中有重要意義。但此模式要求所有服務(wù)器必須支持 IP 隧道協(xié)議,因此只能在 linux 下使用,在 windows 無法使用此模式下,關(guān)鍵步驟:LB會(huì)重新封裝從客戶端發(fā)來的包,封裝后的包目標(biāo)IP為其中一個(gè)Real Server。
3)DR模式
DR(即 Direct Routing 直接路由)與 IP TUN 類似,負(fù)載均衡器僅處理一半的連接,避免了新的性能瓶頸,同樣增加了系統(tǒng)的可伸縮性,DR 與 IP TUN 相比,沒有 IP 封裝的開銷,但由于采用物理層(修改 MAC地址)技術(shù),所有服務(wù)器都必須在同一個(gè)局域網(wǎng) DR 與 IP TUN 相比,沒有 IP 封裝的開銷,但由于采用數(shù)據(jù)鏈路層(修改 MAC地址)技術(shù),所有服務(wù)器都必須在一個(gè)物理網(wǎng)段。
此模式下,關(guān)鍵步驟:LB會(huì)修改從客戶端發(fā)過來的包里的MAC地址,將MAC地址修改為其中某一個(gè)Real Server的mac地址。
4)FULL NAT模式
這種模式為NAT模式的升級(jí)版。 傳統(tǒng)的NAT模式,LB和RS必須在同一個(gè)VLAN下,否則LB無法作為RS的網(wǎng)關(guān)。 這引發(fā)的兩個(gè)問題是:
同一個(gè) VLAN的限制導(dǎo)致運(yùn)維不方便,跨VLAN的RS無法接入。
當(dāng)RS橫向擴(kuò)容時(shí),總有一天其上的單點(diǎn)LB會(huì)成為瓶頸。
Full-NAT解決的是LB和RS跨VLAN的問題,而跨VLAN問題解決后,LB和RS不再存在VLAN上的從屬關(guān)系,可以做到多個(gè)LB對(duì)應(yīng)多個(gè)RS,解決水平擴(kuò)容的問題。 Full-NAT相比NAT的主要改進(jìn)是,在SNAT/DNAT的基礎(chǔ)上,加上另一種轉(zhuǎn)換,轉(zhuǎn)換過程如下:
在包從LB轉(zhuǎn)到 RS 的過程中,源地址從客戶端IP被替換成了LVS 的內(nèi)網(wǎng)IP。內(nèi)網(wǎng)IP之間可以通過多個(gè)交換機(jī)跨VLAN通信。
當(dāng)RS處理完接收到的包,返回時(shí),會(huì)將這個(gè)包返回給LB的內(nèi)網(wǎng)IP,這一步也不受限于 VLAN。
LB收到包后,在NAT模式修改源地址的基礎(chǔ)上,再把RS發(fā)來的包中的目標(biāo)地址從LB內(nèi)網(wǎng)IP改為客戶端的 IP。
Full-NAT主要的思想是把網(wǎng)關(guān)和其下機(jī)器的通信,改為了普通的網(wǎng)絡(luò)通信,從而解決了跨VLAN 的問題。采用這種方式,LB和RS的部署在VLAN上將不再有任何限制,大大提高了運(yùn)維部署的便利性。
LVS的十種調(diào)度算法:
LVS的調(diào)度算法分為靜態(tài)與動(dòng)態(tài)兩類。
1)靜態(tài)算法(4種):只根據(jù)算法進(jìn)行調(diào)度 而不考慮后端服務(wù)器的實(shí)際連接情況和負(fù)載情況
① RR:輪詢調(diào)度(Round Robin) 調(diào)度器通過”輪詢”調(diào)度算法將外部請(qǐng)求按順序輪流分配到集群中的真實(shí)服務(wù)器上,它均等地對(duì)待每一臺(tái)服務(wù)器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載?
② WRR:加權(quán)輪詢(Weight RR) 調(diào)度器通過“加權(quán)輪叫”調(diào)度算法根據(jù)真實(shí)服務(wù)器的不同處理能力來調(diào)度訪問請(qǐng)求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問流量。調(diào)度器可以自動(dòng)問詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
③ DH:目標(biāo)地址hash(Destination Hash ) 根據(jù)請(qǐng)求的目標(biāo)IP地址,作為散列鍵(HashKey)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。
④ SH:源地址 hash(Source Hash) 根據(jù)請(qǐng)求的源IP地址,作為散列鍵(HashKey)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空?
2)動(dòng)態(tài)算法(6種):前端的調(diào)度器會(huì)根據(jù)后端真實(shí)服務(wù)器的實(shí)際連接情況來分配請(qǐng)求
① LC:最少鏈接(Least Connections) 動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用”最小連接”調(diào)度算法可以較好地均衡負(fù)載。
② WLC:加權(quán)最少連接(默認(rèn)采用的就是這種)(Weighted Least Connections) 在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用“加權(quán)最少鏈接”調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載?調(diào)度器可以自動(dòng)問詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
③ SED:最短延遲調(diào)度(Shortest Expected Delay ) 在WLC基礎(chǔ)上改進(jìn),Overhead = (ACTIVE+1)*256/加權(quán),不再考慮非活動(dòng)狀態(tài),把當(dāng)前處于活動(dòng)狀態(tài)的數(shù)目+1來實(shí)現(xiàn),數(shù)目最小的,接受下次請(qǐng)求,+1的目的是為了考慮加權(quán)的時(shí)候,非活動(dòng)連接過多缺陷:當(dāng)權(quán)限過大的時(shí)候,會(huì)導(dǎo)致空閑服務(wù)器一直處于無連接狀態(tài)。
④NQ永不排隊(duì)/最少隊(duì)列調(diào)度(Never Queue Scheduling NQ) 無需隊(duì)列。如果有臺(tái) realserver的連接數(shù)=0就直接分配過去,不需要再進(jìn)行sed運(yùn)算,保證不會(huì)有一個(gè)主機(jī)很空閑。在SED基礎(chǔ)上無論+幾,第二次一定給下一個(gè),保證不會(huì)有一個(gè)主機(jī)不會(huì)很空閑著,不考慮非活動(dòng)連接,才用NQ,SED要考慮活動(dòng)狀態(tài)連接,對(duì)于DNS的UDP不需要考慮非活動(dòng)連接,而httpd的處于保持狀態(tài)的服務(wù)就需要考慮非活動(dòng)連接給服務(wù)器的壓力。
⑤ LBLC:基于局部性的最少鏈接(locality-Based Least Connections) 基于局部性的最少鏈接”調(diào)度算法是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)?該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒有超載,將請(qǐng)求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用“最少鏈接”的原則選出一個(gè)可用的服務(wù)器,將請(qǐng)求發(fā)送到該服務(wù)器?
⑥ LBLCR:帶復(fù)制的基于局部性最少連接(Locality-Based Least Connections with Replication) 帶復(fù)制的基于局部性最少鏈接”調(diào)度算法也是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)?它與LBLC算法的不同之處是它要維護(hù)從一個(gè)目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個(gè)目標(biāo)IP地址到一臺(tái)服務(wù)器的映射?該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址對(duì)應(yīng)的服務(wù)器組,按”最小連接”原則從服務(wù)器組中選出一臺(tái)服務(wù)器,若服務(wù)器沒有超載,將請(qǐng)求發(fā)送到該服務(wù)器;若服務(wù)器超載,則按“最小連接”原則從這個(gè)集群中選出一臺(tái)服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請(qǐng)求發(fā)送到該服務(wù)器?同時(shí),當(dāng)該服務(wù)器組有一段時(shí)間沒有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的程度。
審核編輯:劉清
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9619瀏覽量
87080 -
Mac
+關(guān)注
關(guān)注
0文章
1115瀏覽量
52474 -
LVS
+關(guān)注
關(guān)注
1文章
37瀏覽量
10101 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
317瀏覽量
22131 -
STUN
+關(guān)注
關(guān)注
0文章
2瀏覽量
5951
原文標(biāo)題:LVS四種工作模式和十種算法
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問怎么做一個(gè)跑馬燈有十種模式,第十種模式有三種音樂,可加速減速和無線遙控?
STM32芯片GPIO的四種輸入模式和四種輸出模式
非規(guī)則矩形電阻在Calibre LVS中阻值提取
基于LVS的動(dòng)態(tài)反饋調(diào)度算法研究

二維碼的四種主要應(yīng)用模式
超詳細(xì)!使用 LVS 實(shí)現(xiàn)負(fù)載均衡原理及安裝配置詳解
十種不同模式實(shí)現(xiàn)簡(jiǎn)單的計(jì)算案例

四種常見的圖像濾波算法介紹
基于Cadence軟件DRACULA工具的LVS檢查

DS75LVS+ DS75LVS+ - (Maxim Integrated) - 溫度傳感器 - 模擬和數(shù)字輸出

物理驗(yàn)證LVS對(duì)bulk(體)的理解和處理技巧

GPIO的四種輸入模式介紹

基于LVS+Keepalived實(shí)現(xiàn)高可用負(fù)載均衡

介紹MCUboot支持的四種升級(jí)模式(2)

評(píng)論