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