四層負載均衡的NAT模型與DR模型推導
導讀
本文首先講述四層負載均衡技術(shù)的特點,然后通過提問的方式推導出四層負載均衡器的NAT模型和DR模型的工作原理。通過本文可以了解到四層負載均衡的技術(shù)特點、NAT模型和DR模型的工作原理、以及NAT模型和DR模型的優(yōu)缺點。讀者可以重點關(guān)注NAT模型到DR模型演進的原因(一種技術(shù)的誕生肯定是為了彌補現(xiàn)有技術(shù)的不足)。除此之外,讀者可以多多關(guān)注一些基本的、底層的知識,比如內(nèi)核空間、用戶空間、計算機網(wǎng)絡(luò)等。 為了敘述方便,文中將“四層負載均衡器” 簡稱為“FLB” (Four-tier Load Balancer)。
一、FLB在網(wǎng)絡(luò)中的基本拓撲
FLB工作在OSI七層網(wǎng)絡(luò)參考模型的第四層(傳輸控制層),FLB上必須具備兩個IP地址,VIP和DIP。VIP是暴露給客戶端的訪問地址;DIP是FLB的分發(fā)IP,將數(shù)據(jù)包通過DIP所在的網(wǎng)卡發(fā)送給后端的真實提供服務(wù)的服務(wù)器(后面簡稱“RS”(Real Server)),如下圖。
圖1 FLB的基本網(wǎng)絡(luò)拓撲圖
其中CIP為客戶端的ip,RIP為RS的ip。
二、四層負載均衡技術(shù)的特點
由于FLB工作在傳輸控制層,因此它對數(shù)據(jù)包的處理(轉(zhuǎn)發(fā))總是運行在內(nèi)核態(tài),不會產(chǎn)生內(nèi)核態(tài)和用戶態(tài)的切換。
雖然FLB工作在傳輸控制層,但是它并不會和client進行三次握手,它只是“偷窺”數(shù)據(jù)包中的ip地址和端口號,然后根據(jù)配置的規(guī)則進行數(shù)據(jù)包的轉(zhuǎn)發(fā),速度極快。
三、提出問題
在圖1中,如果client發(fā)送數(shù)據(jù)包最終到達server1,由于client數(shù)據(jù)包的目的ip為VIP,當server1收到數(shù)據(jù)包時,發(fā)現(xiàn)數(shù)據(jù)包的目的ip竟然不是自己的ip,那豈不會丟棄數(shù)據(jù)包?
四、NAT模型
NAT(Network Address Translation)模型,針對3中的問題,可以在FLB中增加對客戶端的目的地址vip的地址轉(zhuǎn)換,將vip轉(zhuǎn)換成后端某一RS的ip,然后再將數(shù)據(jù)包發(fā)送出去,詳細的網(wǎng)絡(luò)拓撲如圖2。
圖2 FLB的NAT 模型的基本網(wǎng)絡(luò)拓撲圖
需要注意的是,上面的后端的server的默認網(wǎng)關(guān)需要配置成負載均衡服務(wù)器的地址。這樣server響應的數(shù)據(jù)包才能回到負載均衡服務(wù)器上。
NAT模型的弊端
很明顯的一點是,在做NAT地址轉(zhuǎn)換時,會消耗負載均衡服務(wù)器cpu的算力。大多數(shù)情況下,client向server請求的數(shù)據(jù)報文很小,而server向client響應的數(shù)據(jù)報文很大,這就是“非對稱”的。在通過NAT的方式實現(xiàn)負載均衡時,client請求報文和server返回的數(shù)據(jù)報文都要經(jīng)過負載均衡服務(wù)器進行網(wǎng)絡(luò)地址轉(zhuǎn)換,如果請求的并發(fā)流量很大,那么大量并發(fā)的響應報文返回到FLB時,負載均衡服務(wù)器的網(wǎng)絡(luò)帶寬就會成為瓶頸。
05DR(Direct Route)模型
直接路由模式可以解決NAT模型的兩個弊端。DR模式不經(jīng)過NAT地址轉(zhuǎn)換,而是將server端返回的數(shù)據(jù)包的源ip直接寫成VIP發(fā)送出去。這其中涉及到幾個要點:
- 由于server返回的數(shù)據(jù)包的源ip要寫成vip,而不是rip,那么在server本地需要配置vip。并且這個vip必須是對外隱藏的,也就是說外界(客戶端、負載均衡器)不能直接訪問到server中的vip,而是必須訪問負載均衡器暴露的vip。
- 在負載均衡器中,接收到client的數(shù)據(jù)包的源ip是cip,目的ip是負載均衡器暴露的vip,那么負載均衡器如何才能將該數(shù)據(jù)包發(fā)送給server呢?(由于server的vip是隱藏的,負載均衡服務(wù)器只能看到rip)。在DR模式中,是通過MAC地址欺騙的方式來實現(xiàn)。負載均衡服務(wù)器接收到client的請求數(shù)據(jù)包之后,將目的MAC地址替換為后端某一臺server1的MAC地址(替換之前,目的MAC地址為負載均衡器的MAC地址),然后將數(shù)據(jù)包發(fā)送出去,進行點到點通信,這樣server1就收到了client的數(shù)據(jù)包。 點對點通信依賴的是MAC地址(數(shù)據(jù)鏈路層)。
- 基于上述內(nèi)容:要實現(xiàn)負載均衡器和后端server點對點通信,因此約束了:負載均衡服務(wù)器的DIP和后端的server必須在同一個機房(局域網(wǎng))。
根據(jù)上面的推導,DR模型的基本網(wǎng)絡(luò)拓撲如圖3所示。
圖 3 FLB的DR 模型的基本網(wǎng)絡(luò)拓撲圖
在RS中如何配置VIP,如何實現(xiàn)VIP隱藏?且聽下回分解:LVS DR模型實驗搭建與驗證。
作者:京東物流 伍泓全
來源:京東云開發(fā)者社區(qū) 自猿其說Tech