導讀
本文首先講述四層負載均衡技術的特點,然后通過提問的方式推導出四層負載均衡器的 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 時,負載均衡服務器的網絡帶寬就會成為瓶頸。
五、DR (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 轉載請注明來源