1. 程式人生 > >linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)

linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)

lvs lb nat

一、簡介

1.1. 負載均衡集群:LB (load balancing)

負載均衡集群為企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載可以在計算機集群中盡可能平均地分攤處理。該負載可能是需要均衡的應用程序處理負載或網絡流量負載。這樣的系統非常適合於運行同一組應用程序的大量用戶。每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。對於網絡流量也是如此。通常,網絡服務器應用程序接受了太多入網流量,以致無法迅速處理,這就需要將流量發送給在其它節點上運行的網絡服務器應用。還可以根據每個節點上不同的可用資源或網絡的特殊環境來進行優化。

技術分享

1.1.1. Virtual Server via NAT (VS-NAT):地址轉換型

用地址翻譯實現虛擬服務器地址轉換器有能被外界訪問到的合法IP地址,它修改來自專有網絡的流出包的地址外界看起來包是來自地址轉換器本身,當外界包送到轉換器時,它能判斷出應該將包送到內部網的哪個節點優點是節省IP地址,能對內部進行偽裝;缺點是效率低,因為返回給請求方的流量經過轉換器。

技術分享

1.1.2. Virtual Server via Direct Routing (VS-DR): 直接路由

用直接路由技術實現虛擬服務器當參與集群的計算機和作為控制管理的計算機在同一個網段時可以用此法,控制管理的計算機接收到請求包時直接送到參與集群的節點直接路由模式比較特別,很難說和什麽方面相似,前2種模式基本上都是工作在網絡層上(三層),而直接路由模式則應該是工作在數據鏈路層上(二層)。

其原理為,DR和REAL SERVER都使用同一個IP對外服務。但只有DR對ARP請求進行響應,所有REAL SERVER對本身這個IP的ARP請求保持靜默。也就是說,網關會把對這個服務IP的請求全部定向給DR,而DR收到數據包後根據調度算法,找出對應的 REAL SERVER,把目的MAC地址改為REAL SERVER的MAC並發給這臺REAL SERVER。這時REAL SERVER收到這個數

據包,則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端。由於DR要對二層包頭進行改換,所以DR和REAL SERVER之間必須在一個廣播域,也可以簡單的理解為在同一臺交換機上。

技術分享


1.1.3. Virtual Server via IP Tunneling (VS-TUN): 隧道

用IP隧道技術實現虛擬服務器這種方式是在集群的節點不在同一個網段時可用的轉發機制,是將IP包封裝在其他網絡流量中的方法為了安全的考慮,應該使用隧道技術中的VPN,也可使用租用專線 集群所能提供的服務是基於TCP/IP的Web服務Mail服務News服務DNS服務Proxy服務器等等.

技術分享

集群系統:





3.2.1. Virtual Server via NAT (VS-NAT):地址轉換型

用地址翻譯實現虛擬服務器地址轉換器有能被外界訪問到的合法IP地址,它修改來自專有網絡的流出包的地址外界看起來包是來自地址轉換器本身,當外界包送到轉換器時,它能判斷出應該將包送到內部網的哪個節點優點是節省IP地址,能對內部進行偽裝;缺點是效率低,因為返回給請求方的流量經過轉換器。

整個過程如圖:CIP為客戶Client的IP,VIP為服務器對外的IP,RIP為內部真實服務器的IP,DIP為主管Director IP

技術分享

1、集群(cluster)節點跟Director必須在同一個IP網絡中;

2、RIP(real server IP)通常是私有地址,僅用於各集群節點間的通信;

3、Director位於client和real server之間,並負責處理進出的所有通信

4、real server必須將網關指向DIP;

5、支持端口映射

6、real server可以使用任意OS;

7、較大規模應用場景中,director易成為系統瓶頸;


3.2.2. LVS-DR工作原理詳解

為了闡述方便,我根據官方原理圖另外制作了一幅圖,如下圖所示:VS/DR的體系結構:

技術分享

我將結合這幅原理圖及具體的實例來講解一下LVS-DR的原理,包括數據包、數據幀的走向和轉換過程。

官方的原理說明:Director接收用戶的請求,然後根據負載均衡算法選取一臺realserver,將包轉發過去,最後由realserver直接回復給用戶。

實例場景設備清單:

技術分享

說明:我這裏為了方便,client是與vip同一網段的機器。如果是外部的用戶訪問,將client替換成gateway即可,因為IP包頭是不變的,變的只是源mac地址。

① client向目標vip發出請求,Director接收。此時IP包頭及數據幀頭信息如下:

技術分享

② VS根據負載均衡算法選擇一臺active的realserver(假設是192.168.57.122),將此RIP所在網卡的mac地址作為目標mac地址,發送到局域網裏。此時IP包頭及數據幀頭信息如下:

技術分享

③ realserver(192.168.57.122)在局域網中收到這個幀,拆開後發現目標IP(VIP)與本地匹配,於是處理這個報文。隨後重新封裝報文,發送到局域網。此時IP包頭及數據幀頭信息如下:

技術分享

④ 如果client與VS同一網段,那麽client(192.168.57.135)將收到這個回復報文。如果跨了網段,那麽報文通過gateway/路由器經由Internet返回給用戶。

以上就是對LVS/DR模式的原理介紹。如果還有其他問題不明白的,可以參考作者另外一篇LVS/DR模式原理剖析的FAQs。

技術分享

3.2.3. Virtual Server via IP Tunneling (VS-TUN): 隧道

用IP隧道技術實現虛擬服務器這種方式是在集群的節點不在同一個網段時可用的轉發機制,是將IP包封裝在其他網絡流量中的方法為了安全的考慮,應該使用隧道技術中的VPN,也可使用租用專線 集群所能提供的服務是基於TCP/IP的Web服務Mail服務News服務DNS服務Proxy服務器等等.

TUN模式:采用NAT技術時,由於請求和響應報文都必須經過調度器地址重寫,當客戶請求越來越多時,調度器的處理能力將成為瓶頸。為了解決這個問題,調度器把請求報文通過IP隧道轉發至真實服務器,而真實服務器將響應直接返回給客戶,所以調度器只處理請求報文。由於一般網絡服務應答比請求報文大許多,采用 VS/TUN技術後集群系統的最大吞吐量可以提高10倍。(通過重寫ip來實現,真實服務器直接回復客戶端。tun原理請參閱VPN原理!),與上圖比較,註意節點的VIP和RIP的區別.

技術分享


1、集群節點可以跨越Internet;

2、RIP必須是公網地址;

3、director僅負責處理入站請求,響應報文則由real server直接發往客戶端;

4、real server不能將網關指向DIP;

5、只有支持隧道功能的OS才能用於real server;

6、不支持端口映射;




本文出自 “風過無痕” 博客,請務必保留此出處http://wangfx.blog.51cto.com/1697877/1956203

linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)