LVS三種負載均衡模式之 網路位址轉換

2021-08-25 20:19:22 字數 2592 閱讀 9845

lvs全稱是linux virtual service

由於ipv4中ip位址空間的日益緊張和安全方面的原因,很多網路使用保留ip位址(10.0.0.0/255.0.0.0、172.16.0.0 /255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。這些位址不在internet上使用,而是專門為內部網路預留的。當內部網路中的主機要訪問internet或被internet訪問時,就需要 採用網路位址轉換(network address translation, 以下簡稱nat),將內部位址轉化為internets上可用的外部位址。nat的工作原理是報文頭(目標位址、源位址和埠等)被正確改寫後,客戶相信 它們連線乙個ip位址,而不同ip位址的伺服器組也認為它們是與客戶直接相連的。由此,可以用nat方法將不同ip位址的並行網路服務變成在乙個ip位址 上的乙個虛擬服務。

vs/nat的體系結構如圖3.1所示。在一組伺服器前有乙個排程器,它們是通過switch/hub相連線的。這些伺服器提供相同的網路服務、相 同的內容,即不管請求被傳送到哪一台伺服器,執行結果是一樣的。服務的內容可以複製到每台伺服器的本地硬碟上,可以通過網路檔案系統(如nfs)共享,也 可以通過乙個分布式檔案系統來提供。

客戶通過virtual ip address(虛擬服務的ip位址)訪問網路服務時,請求報文到達排程器,排程器根據連線排程演算法從一組真實伺服器中選出一台伺服器,將報文的目標位址 virtual ip address改寫成選定伺服器的位址,報文的目標埠改寫成選定伺服器的相應埠,最後將修改後的報文傳送給選出的伺服器。同時,排程器在連線hash 表中記錄這個連線,當這個連線的下乙個報文到達時,從連線hash表中可以得到原選定伺服器的位址和埠,進行同樣的改寫操作,並將報文傳給原選定的服務 器。當來自真實伺服器的響應報文經過排程器時,排程器將報文的源位址和源埠改為virtual ip address和相應的埠,再把報文發給使用者。我們在連線上引入乙個狀態機,不同的報文會使得連線處於不同的狀態,不同的狀態有不同的超時值。在tcp 連線中,根據標準的tcp有限狀態機進行狀態遷移;在udp中,我們只設定乙個udp狀態。不同狀態的超時值是可以設定的,在預設情況下,syn狀態的超 時為1分鐘,established狀態的超時為15分鐘,fin狀態的超時為1分鐘;udp狀態的超時為5分鐘。當連線終止或超時,排程器將這個連線從 連線hash表中刪除。

這樣,客戶所看到的只是在virtual ip address上提供的服務,而伺服器集群的結構對使用者是透明的。對改寫後的報文,應用增量調整checksum的演算法調整tcp checksum的值,避免了掃瞄整個報文來計算checksum的開銷。

在一些網路服務中,它們將ip位址或者埠號在報文的資料中傳送,若我們只對報文頭的ip位址和埠號作轉換,這樣就會出現不一致性,服務會中斷。 所以,針對這些服務,需要編寫相應的應用模組來轉換報文資料中的ip位址或者埠號。我們所知道有這個問題的網路服務有ftp、irc、h.323、 cuseeme、real audio、real video、vxtreme / vosiac、vdolive、vi***ctive、true speech、rstp、pptp、streamworks、ntt audiolink、ntt softwarevision、yamaha midplug、ichat pager、quake和diablo。

下面,舉個例子來進一步說明vs/nat,如圖3.2所示:

vs/nat的配置如下表所示,所有到ip位址為202.103.106.5和埠為80的流量都被負載均衡地排程的真實伺服器 172.16.0.2:80和172.16.0.3:8000上。目標位址為202.103.106.5:21的報文被轉移到172.16.0.3:21 上。而到其他埠的報文將被拒絕。

protocol

virtual ip address

port

real ip address

port

weight

tcp

202.103.106.5

80 172.16.0.2

80 1

172.16.0.3

8000

2 tcp

202.103.106.5

21 172.16.0.3

21 1

從以下的例子中,我們可以更詳細地了解報文改寫的流程。

source

202.100.1.2:3456

dest

202.103.106.5:80

排程器從排程列表中選出一台伺服器,例如是172.16.0.3:8000。該報文會被改寫為如下位址,並將它傳送給選出的伺服器。

source

202.100.1.2:3456

dest

172.16.0.3:8000

從伺服器返回到排程器的響應報文如下:

source

172.16.0.3:8000

dest

202.100.1.2:3456

source

202.103.106.5:80

dest

202.100.1.2:3456

這樣,客戶認為是從202.103.106.5:80服務得到正確的響應,而不會知道該請求是伺服器172.16.0.2還是伺服器172.16.0.3處理的。

**:

三種LVS負載均衡模式

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

lvs的三種負載均衡(1)

lvs是實現軟體的ip負載均衡的一種方式。更多的負載均衡機制可以參考這篇文章。基於不同的網路技術,lvs支援多種負載均衡機制。包括 vs nat 基於網路位址轉換技術 vs tun 基於ip隧道技術 和vs dr 基於直接路由技術 此外,為了適應不同的需要,開發了vs fullnat,從本質上來說也...

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

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