Linux高階之LVS原理

2021-09-14 01:21:53 字數 3185 閱讀 1181

lvs:linux virtual server,負載排程器,整合核心

官網:vs: virtual server,負責排程

rs: real server,負責真正提供服務

l4:四層路由器或交換機

工作原理:vs根據請求報文的目標ip和目標協議及埠將其排程**至某rs,根據排程演算法來挑選rs

lvs集群型別中的術語:

vs:virtual server,director,dispatcher(排程器),load balancer

rs:real server(lvs), upstream server(nginx),backend server(haproxy)

cip:client ip

vip: virtual serve ip vs外網的ip

dip: director ip vs內網的ip

rip: real server ip

訪問流程:cip <--> vip == dip <--> rip

lvs集群的型別:

lvs-nat:修改請求報文的目標ip,多目標ip的dnat

lvs-dr:操縱封裝新的mac位址

lvs-tun:在原請求ip報文之外新加乙個ip首部

lvs-fullnat:修改請求報文的源和目標ip

本質是多目標ip的dnat,通過將請求報文中的目標位址和目標埠修改為某挑出的rs的rip和port實現**

(1)rip和dip必須在同乙個ip網路,且應該使用私網位址;rs的閘道器要指向dip

(2)請求報文和響應報文都必須經由director**,director易於成為系統瓶頸

(3)支援埠對映,可修改請求報文的目標port

(4)vs必須是linux系統,rs可以是任意os系統

nat模式下的簡單體系結構

nat模式ip包排程過程

direct routing,直接路由,lvs預設模式,應用最廣泛通過為請求報文重新封裝乙個mac首部進行**,源mac是dip所在的介面的mac,目標mac是某挑選出的rs的rip所在介面的mac位址;源ip/port,以及目標ip/port均保持不變.其中

- (1) 確保前端路由器將目標ip為vip的請求報文發往director

- (a) 在前端閘道器做靜態繫結vip和director的mac位址

- (b) 在rs上使用arptables工具

- (c) 在rs上修改核心引數以限制arp通告及應答級別

- arp_announce

- arp_ignore

- (2) rs的rip可以使用私網位址,也可以是公網位址;rip與dip在同一ip網路;rip的閘道器不能指向dip,以確保響應報文不會經由director

- (3) rs和director要在同乙個物理網路

- (4) 請求報文要經由director,但響應報文不經由director,而由rs直接發往client

- (5) 不支援埠對映(埠不能修敗)

- (6) rs可使用大多數os系統

vs/dr體系結構

dr模式ip包排程過程

**方式:不修改請求報文的ip首部(源ip為cip,目標ip為vip),而在原ip報文之外再封裝乙個ip首部(源ip是dip,目標ip是rip),將報文發往挑選出的目標rs;rs直接響應給客戶端(源ip是vip,目標ip是cip)

(1) dip, vip, rip都應該是公網位址

(2) rs的閘道器不能,也不可能指向dip

(3) 請求報文要經由director,但響應不能經由director

(4) 不支援埠對映

(5) rs的os須支援隧道功能

vs/tun體系結構

tun模式ip包排程過程

lvs-fullnat:通過同時修改請求報文的源ip位址和目標ip位址進行**

cip --> dip

vip --> rip

(1) vip是公網位址,rip和dip是私網位址,且通常不在同一ip網路;因此,rip的閘道器一般不會指向dip

(2) rs收到的請求報文源位址是dip,因此,只需響應給dip;但director還要將其發往client

(3) 請求和響應報文都經由director

(4) 支援埠對映;

注意:此型別kernel預設不支援

lvs-nat, lvs-fullnat:請求和響應報文都經由director

lvs-nat:rip的閘道器要指向dip

lvs-fullnat:rip和dip未必在同一ip網路,但要能通訊

lvs-dr, lvs-tun:請求報文要經由director,但響應報文由rs直接發往client

lvs-dr:通過封裝新的mac首部實現,通過mac網路**

lvs-tun:通過在原ip報文之外封裝新的ip報文實現**,支援遠距離通訊

根據其排程時是否考慮各rs當前的負載狀態動態靜態

靜態方法:僅根據演算法本身進行排程

1、rr:roundrobin,輪詢

2、wrr:weighted rr,加權輪詢

3、sh:source hashing,實現session sticky,源ip位址hash;將來自於同乙個ip位址的請求始終發往第一次挑中的rs,從而實現會話繫結

4、dh:destination hashing;目標位址雜湊,將發往同乙個目標位址的請求始終**至第一次挑中的rs,典型使用場景是正向**快取場景中的負載均衡,如:寬頻運營商

動態方法:主要根據每rs當前的負載狀態及排程演算法進行排程overhead=value較小的rs將被排程

1、lc:least connections

overhead=activeconns256+inactiveconns

2、wlc:weighted lc,預設排程方法

overhead=(activeconns256+inactiveconns)/weight

3、sed:shortest expection delay,解決初始連線的問題

overhead=(activeconns+1)*256/weight

4、nq:never queue,第一輪均勻分配,後續sed

5、lblc:locality-based lc,動態的dh演算法,使用場景:根據負載狀態實現正向**

6、lblcr:lblc with replication,帶複製功能的lblc

lvs之 lvs原理架構介紹

一 概念 lvs的術語 router gwip vs virtual server,director rs real server cip client ip vip virtual server ip dip ditecter ip connect with rs rip real server ...

LVS原理講解

lvs的英文全名為 linux virtual server 即linux虛擬伺服器,是乙個虛擬的四層交換器集群系統,根據目標位址和目標埠實現使用者請求 本身不產生流量,只做使用者請求 目前是負載均衡效能最好的集群系統。lvs nat 修改請求報文的目標ip,多目標ip的dnat lvs dr 操縱...

Lvs工作原理

當乙個client傳送乙個web請求到vip,lvs伺服器根據vip選擇對應的real server的pool,根據演算法,在pool中選擇一台real server,lvs在hash表中記錄該次連線,然後將client的請求包發給選擇的real server,最後選擇的real server把應答...