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