lvs的三種負載均衡(1)

2021-06-18 13:19:05 字數 2958 閱讀 3125

lvs是實現軟體的ip負載均衡的一種方式。更多的負載均衡機制可以參考這篇文章。

基於不同的網路技術,lvs支援多種負載均衡機制。包括:vs/nat(基於網路位址轉換技術)、vs/tun(基於ip隧道技術)和vs/dr(基於直接路由技術)。

此外,為了適應不同的需要,**開發了vs/fullnat,從本質上來說也是基於網路位址轉換技術。最近還有乙個基於vs/fullnat的dnat模組。

不管使用哪種機制,lvs都不直接處理請求,而是將請求**到後面真正的伺服器(real server)。不同的機制,決定了響應包如何返回到客戶端。

nat(network address translation,網路位址轉換)也叫做網路掩蔽或者ip掩蔽,是將ip 資料報頭中的ip 位址轉換為另乙個ip 位址的過程。

nat能夠將私有(保留)位址轉化為合法ip位址,通常用於乙個公共ip位址和多個內部私有ip位址直接的對映,廣泛應用於各種型別internet接入方式和各種型別的網路中。

通過使用nat將目的位址轉換到多個伺服器的方式,可以實現負載均衡,同時能夠隱藏並保護內部伺服器,避免來自網路外部的攻擊。商用負載均衡裝置如cisco的localdirector、f5的big/ip和alteon的acedirector都是基於nat方法。

vs/nat(virtual server via network address translation)是基於nat技術實現負載均衡的方法。其架構如下圖所示:

客戶通過virtual ip address(虛擬服務的ip位址)訪問網路服務時,請求報文到達排程器

排程器根據連線排程演算法從一組真實伺服器中選出一台伺服器,將報文的目標位址virtual ip address改寫成選定伺服器的位址,報文的目標埠改寫成選定伺服器的相應埠,最後將修改後的報文傳送給選出的伺服器。

真實的伺服器處理請求,並將響應報文發到排程器。

排程器將報文的源位址和源埠改為virtual ip address和相應的埠

排程器將修改過的報文發給使用者

在vs/nat的集群系統中,請求和響應的資料報文都需要通過負載排程器,當真實伺服器的數目在10臺和20臺之間時,負載排程器將成為整個集群系統的新瓶頸。大多數internet服務都有這樣的特點:請求報文較短而響應報文往往包含大量的資料。如果能將請求和響應分開處理,即在負載排程器中只負責排程請求而響應直接返回給客戶,將極大地提高整個集群系統的吞吐量。比如ip隧道技術。

ip tunneling(ip隧道)技術,又稱為ip封裝技術(ip encapsulation),是一種在網路之間傳遞資料的方式。可以將乙個ip報文封裝到另乙個ip報文(可能是不同的協議)中,並**到另乙個ip位址。ip隧道主要用於移動主機和虛擬私有網路(virtual private network),在其中隧道都是靜態建立的,隧道一端有乙個ip位址,另一端也有唯一的ip位址。

vs/tun(virtual server via ip tunneling)是基於隧道技術實現負載均衡的方法。其架構如下圖所示:

vs/tun與vs/nat的工作機制大體上相同,區別在於:

排程器**報文的時候進行了協議的二次封裝,真實的伺服器接收到請求後先進行解包。過程如下圖所示:

響應報文從後端伺服器直接返回給客戶,不需要經過排程器。

dr(direct routing, 直接路由), 路由器學習路由的方法之一。 路由器對於自己的網路介面所直連的網路之間的通訊,可以自動維護路由表,而且不需要進行路由計算。

直接路由通常用在乙個三層交換機連線幾個vlan的情況,只要設定直接路由vlan之間就可以通訊,不需要設定其他的路由方式。

vs/dr(virtual server via direct routing)是基於直接路由實現負載均衡的方法。其架構如下圖所示:

跟vs/tun方法相同,vs/dr利用大多數internet服務的非對稱特點,負載排程器中只負責排程請求,而伺服器直接將響應返回給客戶,可以極大地提高整個集群系統的吞吐量。

vs/dr要求排程器和伺服器組都必須在物理上有乙個網**過不分段的區域網相連,即通過交換機或者高速的hub相連,中間沒有隔有路由器。vip位址為排程器和伺服器組共享,排程器配置的vip位址是對外可見的,用於接收虛擬服務的請求報文;所有的伺服器把vip位址配置在各自的non-arp網路裝置上,它對外面是不可見的,只是用於處理目標位址為vip的網路請求。

vs/dr的整個過程與vs/tun非常類似,不同之處在於排程器不對請求包進行二次封裝,只是將目標mac位址更改為經過排程演算法選出的目標伺服器的mac位址。如下圖:

缺點 缺點

如上節所述,前面三種傳統的負載均衡機制各自存在一些不足。

vs/fullnat是為了解決這些不足而新開發的一種**模式。 vs/fullnat的特點是:

排程器和伺服器可以跨vlan通訊,不需要配置在同乙個網段

請求和應答報文都經過排程器,伺服器不需要繫結虛擬ip

vs/fullnat這兩個特點可以簡化網路拓撲,降低運維成本和風險。

如果人少錢多,不在乎效能的損耗願意多買伺服器,同時希望最大程度較少運維的工作量,可以選擇fullnat

很大眾的方式是用dr,沒有太多的優點但也沒有太多的缺點

如果要搞廣域網負載均衡,那就用tun吧

個人感覺nat不是為了網際網路用的。小併發的實驗性應用或者用在非web場合,比如mysql集群等。當然,如果需要埠對映,必須使用nat方式

**:

三種LVS負載均衡模式

負載均衡集群 1 主流開源軟體 lvs keepalived haproxy nginx等 lvs特點 haproxy特點 nginx特點 2 其中lvs屬於4層 網路osi 7層模型 nginx屬於7層,haproxy既可以認為是4層,也可以當做7層使用 3 keepalived的負載均衡功能其實...

LVS集群的三種負載均衡模式 簡要理解

lvs集群的三種負載均衡模式 1.vs nat nat模式 關鍵點 director修改資料報文的目標位址,目標埠修改為real server的 real server 請求處理完成 director修改資料報文的源位址,源埠為vip 2.vs tun ip隧道模式 director將資料報文進行再...

LVS 負載均衡 三種工作模式 十種排程演算法

lvs linux virtual server 即linux虛擬伺服器,是由章文嵩博士主導的開源負載均衡專案,目前lvs已經被整合到linux核心模組中。該專案在linux核心中實現了基於ip的資料請求負載均衡排程方案,其體系結構如圖1所示,終端網際網路使用者從外部訪問公司的外部負載均衡伺服器,終...