LVS簡介
LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統(tǒng)。本項目在1998年5月由章文嵩博士成立,是中國國內(nèi)最早出現(xiàn)的自由軟件項目之一官册。在linux內(nèi)核2.6版本以后生兆,它已經(jīng)成為內(nèi)核的一部分,在此之前的內(nèi)核版本則需要重新編譯內(nèi)核。
LVS 是四層負載均衡鸦难,也就是說建立在 OSI 模型的第四層——傳輸層之上根吁,傳輸層上有我們熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的負載均衡合蔽。LVS 的轉(zhuǎn)發(fā)主要通過修改 IP 地址(NAT 模式击敌,分為源地址修改 SNAT 和目標地址修改 DNAT)、修改目標 MAC(DR 模式)來實現(xiàn)拴事∥纸铮可以實現(xiàn)高性能,高可用的服務器集群技術(shù)刃宵。廉價衡瓶,可把許多低性能的服務器組合在一起形成一個超級服務器。易用牲证,配置非常簡單哮针,且有多種負載均衡的方法。穩(wěn)定可靠坦袍,即使在集群的服務器中某臺服務器無法正常工作十厢,也不影響整體效果。另外可擴展性也非常好捂齐。
LVS特點
優(yōu)點
1蛮放、開源,免費
2辛燥、在網(wǎng)上能找到一些相關(guān)技術(shù)資源
3筛武、具有軟件負載均衡的一些優(yōu)點
缺點
1、最核心的就是沒有可靠的支持服務挎塌,沒有人對其結(jié)果負責徘六;
2、功能比較簡單榴都,支持復雜應用的負載均衡能力較差待锈,如算法較少等;
3嘴高、開啟隧道方式需重編譯內(nèi)核竿音;
4、配置復雜拴驮;
5春瞬、主要應用于LINUX,目前沒有專門用于WINDOWS的版本套啤,不過可以通過配置宽气,使windows成為LVS集群中的real server(win2003、win2008中)。
LVS術(shù)語
lvs 集群類型中的術(shù)語:
VS :Virtual Server, Director, Dispatcher( 調(diào)度器)萄涯,Load Balancer
RS :Real Server(lvs), upstream server(nginx)绪氛,backend server(haproxy)
CIP :Client IP
VIP: Virtual serve IP VS 外網(wǎng)的IP
DIP: Director IP VS 內(nèi)網(wǎng)的IP
RIP: Real server IP
訪問流程:CIP <--> VIP == DIP <--> RIP
LVS結(jié)構(gòu)
一般來說,LVS集群采用三層結(jié)構(gòu)涝影,其主要組成部分為:
A枣察、負載調(diào)度器(load balancer),它是整個集群對外面的前端機燃逻,負責將客戶的請求發(fā)送到一組服務器上執(zhí)行序目,而客戶認為服務是來自一個IP地址(我們可稱之為虛擬IP地址)上的。
B唆樊、服務器池(server pool)宛琅,是一組真正執(zhí)行客戶請求的服務器,執(zhí)行的服務有WEB逗旁、MAIL嘿辟、FTP和DNS等。
C片效、共享存儲(shared storage)红伦,它為服務器池提供一個共享的存儲區(qū),這樣很容易使得服務器池擁有相同的內(nèi)容淀衣,提供相同的服務昙读。
LVS模式
LVS的工作模式即負載均衡機制,主要有4種膨桥,DR蛮浑、NAT、TUNNEL只嚣、Full-NAT
LVS相對于其它負載均衡的解決辦法沮稚,比如DNS域名輪流解析、應用層負載的調(diào)度册舞、客戶端的調(diào)度等蕴掏,它的效率是非常高的。LVS的通過控制IP來實現(xiàn)負載均衡调鲸。IPVS是其具體的實現(xiàn)模塊盛杰。IPVS的主要作用:安裝在Director Server上面,在Director Server虛擬一個對外訪問的IP(VIPLVS)藐石。用戶訪問VIP即供,到達Director Server,Director Server根據(jù)一定的規(guī)則選擇一個Real Server于微,處理完成后然后返回給客戶端數(shù)據(jù)逗嫡。這些步驟產(chǎn)生了一些具體的問題办素,比如如何選擇具體的Real Server,Real Server如何返回給客戶端數(shù)據(jù)等等祸穷。
IPVS為此有三種機制:
VS/NAT(Virtual Server via Network Address Translation),即網(wǎng)絡地址翻轉(zhuǎn)技術(shù)實現(xiàn)虛擬服務器勺三。當請求來到時雷滚,Diretor server上處理的程序?qū)?shù)據(jù)報文中的目標地址(即虛擬IP地址)改成具體的某臺Real Server,端口也改成Real Server的端口,然后把報文發(fā)給Real Server吗坚。Real Server處理完數(shù)據(jù)后祈远,需要返回給Diretor Server,然后Diretor server將數(shù)據(jù)包中的源地址和源端口改成VIP的地址和端口商源,最后把數(shù)據(jù)發(fā)送出去车份。由此可以看出,用戶的請求和返回都要經(jīng)過Diretor Server牡彻,如果數(shù)據(jù)過多扫沼,Diretor Server肯定會不堪重負。
VS/TUN(Virtual Server via IP Tunneling),即IP隧道技術(shù)實現(xiàn)虛擬服務器庄吼。它跟VS/NAT基本一樣缎除,但是Real server是直接返回數(shù)據(jù)給客戶端,不需要經(jīng)過Diretor server,這大大降低了Diretor server的壓力总寻。
VS/DR(Virtual Server via Direct Routing)器罐,即用直接路由技術(shù)實現(xiàn)虛擬服務器。跟前面兩種方式渐行,它的報文轉(zhuǎn)發(fā)方法有所不同轰坊,VS/DR通過改寫請求報文的MAC地址,將請求發(fā)送到Real Server祟印,而Real Server將響應直接返回給客戶肴沫,免去了VS/TUN中的IP隧道開銷。這種方式是三種負載調(diào)度機制中性能最高最好的旁理,但是必須要求Director Server與Real Server都有一塊網(wǎng)卡連在同一物理網(wǎng)段上樊零。
無論是 DR 還是 NAT 模式,不可避免的都有一個問題:LVS 和 RS 必須在同一個 VLAN 下孽文,否則 LVS 無法作為 RS 的網(wǎng)關(guān)驻襟。
這引發(fā)的兩個問題是:
1、同一個 VLAN 的限制導致運維不方便芋哭,跨 VLAN 的 RS 無法接入沉衣。
2、LVS 的水平擴展受到制約减牺。當 RS 水平擴容時豌习,總有一天其上的單點 LVS 會成為瓶頸存谎。
Full-NAT 由此而生,解決的是 LVS 和 RS 跨 VLAN 的問題肥隆,而跨 VLAN 問題解決后既荚,LVS 和 RS 不再存在 VLAN 上的從屬關(guān)系,可以做到多個 LVS 對應多個 RS栋艳,解決水平擴容的問題恰聘。
Full-NAT 相比 NAT 的主要改進是,在 SNAT/DNAT 的基礎(chǔ)上吸占,加上另一種轉(zhuǎn)換晴叨。不過內(nèi)核是默認不支持Full-NAT,使用必須重新編譯安裝矾屯。
LVS調(diào)度算法
ipvs scheduler: :
根據(jù)其調(diào)度時是否考慮各RS 當前的負載狀態(tài)
兩種:靜態(tài)方法和動態(tài)方法
靜態(tài)調(diào)度方法
僅根據(jù)算法本身進行調(diào)度
1 兼蕊、RR :roundrobin ,輪詢
2 件蚕、WRR :Weighted RR 孙技,加權(quán)輪詢
3 、SH :Source Hashing 排作,實現(xiàn)session sticky 绪杏,源IP 地址 hash ;將來自于同一個IP 地址的請求始終發(fā)往第一次挑中的RS 纽绍,從而實現(xiàn)會話綁定
4 蕾久、DH :Destination Hashing ;目標地址哈希拌夏,將發(fā)往同一個目標地址的請求始終轉(zhuǎn)發(fā)至第一次挑中的RS 僧著,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商
動態(tài)調(diào)度方法
主要根據(jù)每RS 當前的負載狀態(tài)及調(diào)度算法進行調(diào)度較小的RS 將被調(diào)度
1 障簿、LC :least connections 適用于長連接應用
Overhead=activeconns256+inactiveconns
2 盹愚、WLC :Weighted LC, 站故, 默認調(diào)度方法
Overhead=(activeconns256+inactiveconns)/weight
3 皆怕、SED :Shortest Expection Delay, 初始連接高權(quán)重優(yōu)先
Overhead=(activeconns+1)*256/weight
4 、NQ :Never Queue 西篓,第一輪均勻分配愈腾,后續(xù)SED
5 、LBLC :Locality-Based LC 岂津,動態(tài)的DH 算法虱黄,使用場景:
根據(jù)負載狀態(tài)實現(xiàn)正向代理
6 、LBLCR :LBLC with Replication 吮成,帶復制功能的LBLC
解決LBLC 負載不均衡問題橱乱,從負載重的復制到負載輕的RS