作者: xiaodongpan
Linux伺服器叢集系統即LVS(Linux Virtual Server),是章文嵩在國防科技大學博士期間開發的一個開源項目,該項目也是中國開源少有的幾個成功項目之一,該項目已經進入到Linux核心,在國内外被廣泛的使用。章文嵩博士目前就職到淘寶,繼續主持LVS的相關工作。各大網際網路公司都在對LVS進行修改和使用,是以産生了不通的LVS變種,比如百度的BIG-NAT,淘寶的FullNAT,騰訊的TGW(目前我還不太了解)。其基本原理都是在netfilter層,對資料包進行過濾、修改和僞裝。
LVS原生的三種轉發模式:
LVS-DR
LVS-NAT
LVS-TUN
原理: mac位址僞裝,通過修改源包的mac位址進行投遞
示意圖:

原理: 通過修改源目的IP實作,進入時DNAT,出去時SNAT
原理: 通過IP tunnel實作,進入時加上IP頭部
介紹:一種新型新型的轉發模式,NAT的加強版,由吳佳明等在章文嵩帶帶領下實作 原理: 通過修改改源目的IP實作,但是比LVS-NAT更徹底,進入時DNAT+SNAT,出去時由SNAT+DNAT
▲NAT包修改示意圖
在入包時,進行目的位址轉換,出包時進行源位址轉換,為了讓出去的資料包,經過LVS,需要添加政策路由。
▲FullNAT實作原理
在入包時修改目的位址,同時把源位址改為内網位址,這樣包就可以完全無限制的在整個内外路由,出包時修改源位址為vip位址,目的位址為真實的ClientIP位址,進而實作回包到目的地。
•優點:性能好,rs直接回包
• 缺點:
1、 rs必須在一個vlan中,這在多網絡環境中限制非常大;
2、 rs必須綁定vip,麻煩且風險大
3、不支援端口映射
• 優點:
1、 rs可以在整個内網中,沒有vlan的限制
2、支援端口映射
1、 rs的網關必須是lvs機器,如果不是,則需要配置靜态路由
• 優點:性能好,rs直接回包
• 缺點:
1、 rs配置複雜,需要配置ipip子產品
2、 rs綁定vip,風險大
1、資料包可以在整個内外中任意路由
2、交換機和路由器無需任何特殊配置
• 缺點: windows無法擷取client ip
從上面幾種模式來看,FullNAT無疑是一種最好的轉發模式,他無需要對路由器,rs進行特殊操作,就可以完成整個代理轉發。其實在具有一定網絡規模的環境中,無論是要求在同一個VLAN,還是要配置靜态路由,對網絡拓撲配置都是極大的破壞,而且綁定vip風險極大,而且實作自動化困難。從實際應用來看,LVS-DR,LVS-NAT,LVS-TUNNEL都沒有很大規模的應用案例,相反,LVS-FullNAT已經被大範圍的使用,包括阿裡,小米,汽車之家,UC等很多網際網路公司,規模都是很大。鑒于DR的操作複雜性和風險,建議考慮FullNAT作為替代方案。