1. 程式人生 > >LVS原理詳解(4種工作模式)

LVS原理詳解(4種工作模式)

叢集

什麼是叢集

計算機叢集簡稱叢集是一種計算機系統,它通過一組鬆散整合的計算機軟體和/或硬體連線起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看作是一臺計算機。集群系統中的單個計算機通常稱為節點,通常通過區域網連線,但也有其它的可能連線方式。叢集計算機通常用來改進單個計算機的計算速度和/或可靠性。一般情況下叢集計算機比單個計算機,比如工作站或超級計算機效能價格比要高得多。

叢集就是一組獨立的計算機,通過網路連線組合成一個組合來共同完一個任務

LVS在企業架構中的位置

這裡寫圖片描述

叢集的特點

1)高效能performance
2)價效比
3)可伸縮性
4)高可用性

常用叢集軟硬體

常用開源叢集軟體有:lvs,keepalived,haproxy,nginx,apache,heartbeat

常用商業叢集硬體有:F5,Netscaler,Radware,A10等

LVS簡介

LVS是Linux Virtual Server的簡寫,意即Linux虛擬伺服器,是一個虛擬的伺服器集群系統。
LVS採用IP負載均衡技術和基於內容請求分發技術。排程器具有很好的吞吐率,將請求均衡地轉移到不同的伺服器上執行,且排程器自動遮蔽掉伺服器的故障,從而將一組伺服器構成一個高效能的、高可用的虛擬伺服器。整個伺服器叢集的結構對客戶是透明的,而且無需修改客戶端和伺服器端的程式。為此,在設計時需要考慮系統的透明性、可伸縮性、高可用性和易管理性

LVS 的四種工作模式原理簡介及優缺點

1、NAT模式

原理
這個是通過網路地址轉換的方法來實現排程的。首先排程器(LB)接收到客戶的請求資料包時(請求的目的IP為VIP),根據排程演算法決定將請求傳送給哪個後端的真實伺服器(RS)。然後排程就把客戶端傳送的請求資料包的目標IP地址及埠改成後端真實伺服器的IP地址(RIP),這樣真實伺服器(RS)就能夠接收到客戶的請求資料包了。真實伺服器響應完請求後,檢視預設路由(NAT模式下我們需要把RS的預設路由設定為LB伺服器。)把響應後的資料包傳送給LB,LB再接收到響應包後,把包的源地址改成虛擬地址(VIP)然後傳送回給客戶端。
這裡寫圖片描述


原理圖簡述:

1)客戶端請求資料,目標IP為VIP

2)請求資料到達LB伺服器,LB根據排程演算法將目的地址修改為RIP地址及對應埠(此RIP地址是根據排程演算法得出的。)並在連線HASH表中記錄下這個連線。

3)資料包從LB伺服器到達RS伺服器webserver,然後webserver進行響應。Webserver的閘道器必須是LB,然後將資料返回給LB伺服器。

4)收到RS的返回後的資料,根據連線HASH表修改源地址VIP&目標地址CIP,及對應埠80.然後資料就從LB出發到達客戶端。

5)客戶端收到的就只能看到VIP\DIP資訊。

NAT模式優缺點:

1、NAT技術將請求的報文和響應的報文都需要通過LB進行地址改寫,因此網站訪問量比較大的時候LB負載均衡排程器有比較大的瓶頸,一般要求最多之能10-20臺節點

2、只需要在LB上配置一個公網IP地址就可以了。

3、每臺內部的節點伺服器的閘道器地址必須是排程器LB的內網地址。

4、NAT模式支援對IP地址和埠進行轉換。即使用者請求的埠和真實伺服器的埠可以不一致。

2、TUN模式(隧道模式)

原理
virtual server via ip tunneling模式:採用NAT模式時,由於請求和響應的報文必須通過排程器地址重寫,當客戶請求越來越多時,排程器處理能力將成為瓶頸。為了解決這個問題,排程器把請求的報文通過IP隧道轉發到真實的伺服器。真實的伺服器將響應處理後的資料直接返回給客戶端。這樣排程器就只處理請求入站報文,由於一般網路服務應答資料比請求報文大很多,採用VS/TUN模式後,集群系統的最大吞吐量可以提高10倍。

VS/TUN的工作流程圖如下所示,它和NAT模式不同的是,它在LB和RS之間的傳輸不用改寫IP地址。而是把客戶請求包封裝在一個IP tunnel裡面,然後傳送給RS節點伺服器,節點伺服器接收到之後解開IP tunnel後,進行響應處理。並且直接把包通過自己的外網地址傳送給客戶不用經過LB伺服器。
Tunnel原理流程圖:
這裡寫圖片描述

原理圖過程簡述:

1)客戶請求資料包,目標地址VIP傳送到LB上。

2)LB接收到客戶請求包,進行IP Tunnel封裝。即在原有的包頭加上IP Tunnel的包頭。然後傳送出去。

3)RS節點伺服器根據IP Tunnel包頭資訊(此時就有一種邏輯上的隱形隧道,只有LB和RS之間懂)收到請求包,然後解開IP Tunnel包頭資訊,得到客戶的請求包並進行響應處理。

4)響應處理完畢之後,RS伺服器使用自己的出公網的線路,將這個響應資料包傳送給客戶端。源IP地址還是VIP地址。

NAT模式優缺點:
優點:負載均衡器只負責將請求包分發給後端節點伺服器,而RS將應答包直接發給使用者。所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量,這種方式,一臺負載均衡器能夠為很多RS進行分發。而且跑在公網上就能進行不同地域的分發。

缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的伺服器支援”IP Tunneling”(IP Encapsulation)協議,伺服器可能只侷限在部分Linux系統上。

3、DR模式(直接路由模式)

原理
DR模式是通過改寫請求報文的目標MAC地址,將請求發給真實伺服器的,而真實伺服器響應後的處理結果直接返回給客戶端使用者。同TUN模式一樣,DR模式可以極大的提高集群系統的伸縮性。而且DR模式沒有IP隧道的開銷,對叢集中的真實伺服器也沒有必要必須支援IP隧道協議的要求。但是要求排程器LB與真實伺服器RS都有一塊網絡卡連線到同一物理網段上,必須在同一個區域網環境。

DR模式是網際網路使用比較多的一種模式。

DR模式原理圖:
這裡寫圖片描述

DR模式將報文直接路由給目標真實伺服器。在DR模式中,排程器根據各個真實伺服器的負載情況,連線數多少等,動態地選擇一臺伺服器,不修改目標IP地址和目標埠,也不封裝IP報文,而是將請求報文的資料幀的目標MAC地址改為真實伺服器的MAC地址。然後再將修改的資料幀在伺服器組的區域網上傳送。因為資料幀的MAC地址是真實伺服器的MAC地址,並且又在同一個區域網。那麼根據區域網的通訊原理,真實復位是一定能夠收到由LB發出的資料包。真實伺服器接收到請求資料包的時候,解開IP包頭檢視到的目標IP是VIP。(此時只有自己的IP符合目標IP才會接收進來,所以我們需要在本地的迴環藉口上面配置VIP。
另:由於網路介面都會進行ARP廣播響應,但叢集的其他機器都有這個VIP的lo介面,都響應就會衝突。所以我們需要把真實伺服器的lo介面的ARP響應關閉掉。)然後真實伺服器做成請求響應,之後根據自己的路由資訊將這個響應資料包傳送回給客戶,並且源IP地址還是VIP。

DR模式小結:

1、通過在排程器LB上修改資料包的目的MAC地址實現轉發。注意源地址仍然是CIP,目的地址仍然是VIP地址。

2、請求的報文經過排程器,而RS響應處理後的報文無需經過排程器LB,因此併發訪問量大時使用效率很高(和NAT模式比)

3、因為DR模式是通過MAC地址改寫機制實現轉發,因此所有RS節點和排程器LB只能在一個局域網裡面

4、RS主機需要繫結VIP地址在LO介面上,並且需要配置ARP抑制。

5、RS節點的預設閘道器不需要配置成LB,而是直接配置為上級路由的閘道器,能讓RS直接出網就可以。

6、由於DR模式的排程器僅做MAC地址的改寫,所以排程器LB就不能改寫目標埠,那麼RS伺服器就得使用和VIP相同的埠提供服務。

官方三種負載均衡技術比較總結表:

這裡寫圖片描述

LVS-FULLNAT轉發模式

在大規模的網路下,在淘寶的業務中,官方LVS滿足不了需求;原因有3點,
1) 剛才講三種轉發模式,部署成本比較高;
2) 和商用的負載均衡比,LVS沒有DDOS防禦攻擊功能;
3) 主備部署模式,效能無法擴充套件;一個VIP下的流量特別大怎麼辦?

FULLNAT原理:
FULLNAT轉發資料包是類似NAT模式,IN和OUT資料包都是經過LVS;唯一的區別:後端RealServer 或者交換機不需要做任何配置。
FULLNAT的主要原理是引入local address(內網ip地址),cip-vip轉換為lip->rip,而 lip和rip均為IDC內網ip,可以跨vlan通訊

NAT原理圖:
這裡寫圖片描述

FULLNAT原理圖:
這裡寫圖片描述

如圖所示,相比NAT模式,FullNAT多了一個Local IP,IP地址轉換時,源和目的IP都改了,即SNAT+DNAT。

FULLNAT模式的優缺點:
FULLNAT一個最大的問題是:RealServer無法獲得使用者IP;為了解決這個問題我們提出了TOA的概念,主要原理是:將client address放到了TCP Option裡面帶給後端RealServer,RealServer上通過toa核心模組hack了getname函式,給使用者態返回TCP Option中的client ip。