導(dǎo)讀
本文首先講述四層負載均衡技術(shù)的特點,然后通過提問的方式推導(dǎo)出四層負載均衡器的 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,當(dāng) 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 響應(yīng)的數(shù)據(jù)包才能回到負載均衡服務(wù)器上。
NAT 模型的弊端
很明顯的一點是,在做 NAT 地址轉(zhuǎn)換時,會消耗負載均衡服務(wù)器 cpu 的算力。大多數(shù)情況下,client 向 server 請求的數(shù)據(jù)報文很小,而 server 向 client 響應(yīng)的數(shù)據(jù)報文很大,這就是 “非對稱” 的。在通過 NAT 的方式實現(xiàn)負載均衡時,client 請求報文和 server 返回的數(shù)據(jù)報文都要經(jīng)過負載均衡服務(wù)器進行網(wǎng)絡(luò)地址轉(zhuǎn)換,如果請求的并發(fā)流量很大,那么大量并發(fā)的響應(yīng)報文返回到 FLB 時,負載均衡服務(wù)器的網(wǎng)絡(luò)帶寬就會成為瓶頸。
五、DR (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ù)上面的推導(dǎo),DR 模型的基本網(wǎng)絡(luò)拓撲如圖 3 所示。
圖 3 FLB 的 DR 模型的基本網(wǎng)絡(luò)拓撲圖
在 RS 中如何配置 VIP,如何實現(xiàn) VIP 隱藏?且聽下回分解:LVS DR 模型實驗搭建與驗證。
作者:京東物流 伍泓全
來源:京東云開發(fā)者社區(qū) 自猿其說 Tech 轉(zhuǎn)載請注明來源