1. 程式人生 > >簡述Lvs集群類型及調度算法

簡述Lvs集群類型及調度算法

lvs集群的類型及調度算法

Lvs的的介紹:

LvsLinux Virtual Server,負載調度器,集成內核 ,是一套開源軟件;用於實現負載均衡,工作在內核空間,四層轉發和四層路由,即在傳輸層轉發,由於工作在內核空間,突破了套接字數量的限制,工作性能極強,經測試能夠實現400w並發。

lvs集群類型中的術語:

VS:VirtualServer,Director,Dispatcher(調度器),Load Balancer

RSReal Server(lvs) upstream server(nginx)backend server(haproxy)Replica(副本)

CIPClient IP 客戶端ip

VIP

: Virtualserver IP VS外網的IP

DIP: DirectorIP VS 內網的IP

RIP: Realserver IP

VS: Virtual Server,負責調度
RS:Real Server,負責真正提供服務

官網: http://www.linuxvirtualserver.org/

LVS基本工作原理

技術分享

1. 當用戶向負載均衡調度器(VS或者叫LB)發起請求,調度器將請求發往至內核空間。

2. PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈。

3. IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那麽此時IPVS會強行修改數據包裏的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈。

4. POSTROUTING鏈接收數據包後發現目標IP地址剛好是自己的後端服務器,那麽此時通過選路,將數據包最終發送給後端的服務器。


四種集群的工作類型

LVS/NAT: NAT模式。修改請求報文的目標IP,多目標IP的DNAT。

LVS/DRDirectRouting(直接路由)。操縱封裝新的MAC地址。

LVS/TUNTunneling(隧道)。在原請求IP報文之外新加一個IP首部。

LVS/FULLNATFull NAT。修改請求報文的源和目標IP

1、 lvs-nat

原理:本質是多目標IPDNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RSRIPPORT實現轉發

特性:

1 RIPDIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP
2)請求報文和響應報文都必須經由Director轉發, Director 易於成為系統瓶頸
3)支持端口映射,可修改請求報文的目標PORT
4 VS必須是Linux系統, RS可以是任意OS系統

體系拓撲圖:

技術分享

NAT模式的報文詳細流向拓撲圖

技術分享

(1). 當用戶請求到達DirectorServer,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP
(2). PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
(3). IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為後端服務器IP,然後將數據包發至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP
(4). POSTROUTING鏈通過選路,將數據包發送給Real Server
(5). Real Server比對發現目標為自己的IP,開始構建響應報文發回給DirectorServer。 此時報文的源IP為RIP,目標IP為CIP
(6). Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然後響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP2。

2. LVS/DR

原理:LVS-DR: Direct Routing,直接路由, LVS默認模式,應用最廣泛,通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP
所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的
MAC地址;源IP/PORT,以及目標IP/PORT均保持不變。

特性:

1、特點1:保證前端路由將目標地址為VIP報文統統發給Director Server,而不是RS

2RS可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對RIP進行直接訪問。

3RSDirector Server必須在同一個物理網絡中。

4、所有的請求報文經由DirectorServer,但響應報文必須不能進過Director Server

5、不支持地址轉換,也不支持端口映射。

6RS可以是大多數常見的操作系統。

7RS的網關絕不允許指向DIP(因為我們不允許他經過director)

8RS上的lo接口配置VIPIP地址。

9、缺陷:RSDS必須在同一機房中。

DR的結構拓撲圖:

技術分享

DR模式的報文詳細流向拓撲圖

技術分享

(1) 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。此時報文的源IP為CIP,目標IP為VIP 。
(2) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。
(3) IPVS比對數據包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然後發至POSTROUTING鏈。此時源IP為DIP,目標IP為RIP 。
(4) POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。此時源IP為DIP,目標IP為RIP。
(5) RS接收到報文後發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP後,會發現裏面還有一層IP首部,而且目標是自己的lo接口VIP,那麽此時RS開始處理此請求,處理完成之後,通過lo接口送給eth0網卡,然後向外傳遞。此時的源IP地址為VIP,目標IP為CIP。
(6) 響應報文最終送達至客戶端。

3、lvs-tun:
定義:轉發方式:不修改請求報文的IP首部(源IPCIP,目標IPVIP),而在原IP報文之外再封裝一個IP首部(源IPDIP,目
IPRIP),將報文發往挑選出的目標RSRS直接響應給客
戶端(源IPVIP,目標IPCIP
特性:

(1) DIP, VIP, RIP都應該是公網地址
(2) RS的網關不能,也不可能指向DIP
(3)
請求報文要經由Director,但響應不能經由Director
(4)
不支持端口映射
(5) RSOS須支持隧道功能

4、lvs-fullnat:

lvs-fullnat:通過同時修改請求報文的源IP地址和目標IP地址進行轉發
CIP --> DIP
VIP --> RIP
(1) VIP
是公網地址, RIPDIP是私網地址,且通常不在同一IP網絡;因此, RIP的網關一般不會指向DIP
(2) RS
收到的請求報文源地址是DIP,因此,只需響應給
DIP;但Director還要將其發往Client
(3)
請求和響應報文都經由Director
(4)
支持端口映射;
註意:此類型kernel默認不支持

LVS調度算法

定義:根據其調度時是否考慮各RS當前的負載狀態,分為靜態方法和動態方法。

靜態方法:僅根據算法本身進行調度

1. RRroundrobin,輪詢。

2. WRRWeighted RR,加權輪詢。

3. SHSource Hashing,實現session sticky,源IP地址hash;將來自於同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定。

4. DHDestination Hashing;目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商。

動態方法:主要根據每RS當前的負載狀態及調度算法進行調度,Overhead=value較小的RS將被調度。

1. LCleast connections,最少連接,適用於長連接應用。Overhead=activeconns*256+inactiveconns

2. WLCWeighted LC,加權最少連接,默認調度方法。Overhead=(activeconns*256+inactiveconns)/weight

3. SEDShortest ExpectionDelay,初始連接高權重優先。Overhead=(activeconns+1)*256/weight

4. NQNever Queue,第一輪均勻分配,後續SED

5. LBLCLocality-Based LC,動態的DH算法,使用場景: 根據負載狀態實現正向代理。

6. LBLCRLBLC withReplication,帶復制功能的LBLC,解決LBLC負載不均衡問題,從負載重的復制到負載輕的RS

LVS工作模式總結:

技術分享

  • LVS/NAT, LVS/FULLNAT:請求和響應報文都經由VS

    • LVS/NATRIP的網關要指向DIP

    • LVS/FULLNATRIPDIP未必在同一IP網絡,但要能通信

  • LVS/DR, LVS/TUN:請求報文要經由VS,但響應報文由RS直接發往Client

    • LVS/DR:通過封裝新的MAC首部實現,通過MAC網絡轉發

    • LVS/TUN:通過在原IP報文之外封裝新的IP報文實現轉發,支持遠距離通信

註意:其實企業中最常用的是 DR 實現方式,而 NAT 配置上比較簡單和方便,後邊實踐中會總結DR NAT 具體使用配置過程。


本文出自 “12180356” 博客,請務必保留此出處http://12190356.blog.51cto.com/12180356/1977932

簡述Lvs集群類型及調度算法