您好,登錄后才能下訂單哦!
LVS:Linux Virtual Server,負載調(diào)度器,內(nèi)核集成,章文嵩(花名 正明)
VS根據(jù)請求報文的目標IP和目標協(xié)議及端口將其調(diào)度轉(zhuǎn)發(fā)至某RS,根據(jù)調(diào)度算法來挑選RS
VS:Virtual Server 虛擬的服務(wù)器
RS:Real Server(lvs) 真正提供服務(wù)的服務(wù)器
CIP:Client IP 客戶端的IP
VIP: Virtual serve IP LVS服務(wù)器針對互聯(lián)網(wǎng)的客戶端設(shè)置的IP,是虛擬IP
DIP: Director IP 局域網(wǎng)內(nèi)LVS服務(wù)器設(shè)置的IP
RIP: Real server IP 真實服務(wù)器的IP
LVS服務(wù)器,客戶端訪問流程圖
本質(zhì)是多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現(xiàn)轉(zhuǎn)發(fā)
(1)RIP和DIP應(yīng)在同一個IP網(wǎng)絡(luò),且應(yīng)使用私網(wǎng)地址;RS的網(wǎng)關(guān)要指向DIP
(2)請求報文和響應(yīng)報文都必須經(jīng)由Director轉(zhuǎn)發(fā),Director易于成為系統(tǒng)瓶頸
(3)支持端口映射,可修改請求報文的目標PORT
(4)VS必須是Linux系統(tǒng),RS可以是任意OS系統(tǒng)
如上圖所示,客戶端通過路由去訪問LVS對外開放的VIP,當LVS收到請求報文時,會將其攔截下來,通過自身的DIP將請求報文傳給其中的一臺RS服務(wù)器(DIP和RIP需要在同一個局域網(wǎng),同一個網(wǎng)段)。RS服務(wù)器收到請求報文后,發(fā)送響應(yīng)報文通過LVS服務(wù)器發(fā)送給客戶端(相當于怎么來的就怎么回去)。在用戶訪問的過程中,LVS服務(wù)器實際上是對VIP進行了地址轉(zhuǎn)換,轉(zhuǎn)換成了正式服務(wù)器的IP,從而實現(xiàn)互相通訊。
NAT模式IP包調(diào)度過程
NAT模式內(nèi)部的工作原理圖
LVS服務(wù)器之所以能實現(xiàn)將發(fā)送給自己的數(shù)據(jù)包轉(zhuǎn)交給其他主機,是因為LVS是潛伏在鉤子函數(shù)INPUT這里,一旦發(fā)現(xiàn)有用戶訪問的數(shù)據(jù)包通過PREROUTING后發(fā)送給INPUT,LVS會將其截獲下來,改變目標地址為真實服務(wù)器的地址,轉(zhuǎn)而發(fā)給POSTROUTING,從而發(fā)送給真實服務(wù)器,實現(xiàn)調(diào)度轉(zhuǎn)發(fā)的功能。
1、NAT技術(shù)將請求的報文和響應(yīng)的報文都需要通過LVS進行地址改寫,因此網(wǎng)站訪問量比較大的時候LVS負載均衡調(diào)度器有比較大的瓶頸,一般要求最多之能10-20臺節(jié)點
2、只需要在LVS上配置一個公網(wǎng)IP地址就可以了。(也可以通過iptables規(guī)則實現(xiàn)NAT,這樣私網(wǎng)地址也可以的)
3、每臺內(nèi)部的節(jié)點服務(wù)器的網(wǎng)關(guān)地址必須是調(diào)度器LB的內(nèi)網(wǎng)地址。(如果LVS的DIP和RIP在同一個局域網(wǎng)并且在同一個網(wǎng)段,不需要指定網(wǎng)關(guān))
4、NAT模式支持對IP地址和端口進行轉(zhuǎn)換。即用戶請求的端口和真實服務(wù)器的端口可以不一致
LVS-DR:Direct Routing,直接路由,LVS默認模式,應(yīng)用最廣泛,通過為請求報文重新封裝一個MAC首部進行轉(zhuǎn)發(fā),源MAC是DIP所在的接口MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變
DR模型,請求報文,和響應(yīng)報文走的不是同一個路徑,請求報文經(jīng)過LVS發(fā)送給RS,響應(yīng)報文在回應(yīng)的時候,不需要原路返回,它可以直接返回給客戶端。
這種模型帶來的最大的好處就是LVS服務(wù)i去的壓力變小了。因為只有請求報文需要通過VS服務(wù)器發(fā)送給RS服務(wù)器,而RS服務(wù)器的響應(yīng)報文是直接發(fā)送給客戶端的,不需要經(jīng)過LVS服務(wù)器。而且一般請求報文相對響應(yīng)報文來說要小的多。這樣就使得LVS的服務(wù)器的壓力小了很多。
LVS-DR模式圖解
因為RS服務(wù)器需要直接將請求報文發(fā)送給客戶端,而客戶端訪問的IP是VIP,只有來自VIP的包客戶端才會接收,所以我們需要在RS服務(wù)器上也配置VIP。但是這樣的話LVS和RS都有了一樣的IP,這樣就會帶來地址沖突的問題。我們需要解決地址沖突的問題。
我們需要在RS上修改內(nèi)核參數(shù)以限制arp通告及應(yīng)答級別
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
DR模型特點:LVS的壓力小,通過改變MAC地址來實現(xiàn)調(diào)度轉(zhuǎn)發(fā),不能映射端口號。
LVS-DR模式數(shù)據(jù)包流轉(zhuǎn)的過程
轉(zhuǎn)發(fā)方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發(fā)往挑選出的目標RS;RS直接響應(yīng)給客戶端(源IP是VIP,目標IP是CIP)
(1) DIP, VIP, RIP都應(yīng)該是公網(wǎng)地址
(2) RS的網(wǎng)關(guān)一般不能指向DIP
(3) 請求報文要經(jīng)由Director,但響應(yīng)不經(jīng)由Director
(4) 不支持端口映射
(5) RS的OS須支持隧道功能
lvs-fullnat:通過同時修改請求報文的源IP地址和目標IP地址進行轉(zhuǎn)發(fā)
CIP --> DIP
VIP --> RIP
(1) VIP是公網(wǎng)地址,RIP和DIP是私網(wǎng)地址,且通常不在同一IP網(wǎng)絡(luò);因此,RIP的網(wǎng)關(guān)一般不會指向DIP
(2) RS收到的請求報文源地址是DIP,因此,只需響應(yīng)給DIP;但Director還要將其發(fā)往Client
(3) 請求和響應(yīng)報文都經(jīng)由Director
(4) 支持端口映射
LVS的調(diào)度又分為靜態(tài)方法和動態(tài)方法。
靜態(tài)方法:僅根據(jù)算法本身進行調(diào)度
1、RR:roundrobin,輪詢,即按順序分配請求,即使某個機器性能不好,或者宕機,也會將請求分配給這臺主機
2、WRR:Weighted RR,加權(quán)輪詢,跟RR的區(qū)別再于它可以通過對每個RS服務(wù)器去設(shè)置權(quán)重,來實現(xiàn)依照服務(wù)器性能的優(yōu)略分配任務(wù),性能好的分配任務(wù)多點,性能差的分配任務(wù)少點。也會存在RR一樣的缺點
3、SH:Source Hashing,實現(xiàn)session sticky,源IP地址hash;將來自于同一個IP地址的請求始終發(fā)往第一次挑中的RS,從而實現(xiàn)會話綁定。
4、DH:Destination Hashing;目標地址哈希,第一次輪詢調(diào)度至RS,后續(xù)將發(fā)往同一個目標地址的請求始終轉(zhuǎn)發(fā)至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商。
動態(tài)方法:主要根據(jù)每RS當前的負載狀態(tài)及調(diào)度算法進行調(diào)度Overhead=value較小的RS將被調(diào)度
1、LC:least connections 適用于長連接應(yīng)用
Overhead=activeconns*256+inactiveconns
2、WLC:Weighted LC,默認調(diào)度方法
Overhead=(activeconns*256+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,帶復(fù)制功能的LBLC,解決LBLC負載不均衡
問題,從負載重的復(fù)制到負載輕的RS
Overhead 表示優(yōu)先級、
activeconns 正處于連接的數(shù)量
inactiveconns 非活動連接的數(shù)量
weight 權(quán)重
優(yōu)點:
Lvs屬于內(nèi)核級的功能,它的并發(fā)量是相當大的,能達到幾百萬的并發(fā)
缺點:
沒有所謂的高可用功能,不能檢查后端服務(wù)器的健康性,(后端服務(wù)器宕機了,lvs是沒有辦法去管理的)
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。