LVS 簡稱 Linux Virtual Server,在實際環境中經常作為B/S結構的網路應用中的負載平衡器來使用,工作在7層網路模型中的,網路層,也就是通常說的IP層,由於資料的處理是在Linux核心態完成的,所以效能很高,比起 Apache,Nginx,Haproxy來說,效能不在一個層級。
這裡我簡單畫一下LVS在應用時的部署環境:
簡單解釋一下一個使用者訪問www.opencfg.com的流程:
1.使用者在瀏覽器輸入http://www.opencfg.com, 使用者的電腦通過網路詢問DNS,www.opencfg.com網域名稱的IP地址
2.DNS伺服器通過使用者的地址,在伺服器列表裡選擇一個距離使用者最近的LVS虛擬服務IP地址(VIP)
3.使用者瀏覽器通過DNS獲得的IP地址,訪問LVS伺服器
4.這裡有三種LVS的使用方法:
(1).NAT模式
(2).DR模式,直接路由
(3).TUN模式,IP隧道
5.如果採用NAT模式,那麼會產生步驟5,web伺服器將資料返回給LVS
6.如果採用DR/TUN模式,資料將由web伺服器直接返回給使用者(此時web伺服器需要外網IP地址),NAT模式,是web伺服器先返回給LVS(這裡web伺服器不需要外網IP), LVS再返回給使用者
LVS的核心技術在與三種方法的使用,這裡先介紹第一種模式,NAT
一、傳統的NAT模式
使用者訪問的步驟如,其中LVS NAT模式會根據一張調度列表,選擇一個Apache的IP地址,將資料包轉寄
調度列表如下:
Protocol Virtual IP Address Port Real IP Address Port
TCP 74.125.71.99 80 192.168.1.201 80
192.168.1.202 80
訪問Web服務的報文可能有以下的源地址和目標地址:
source 220.181.112.143:3879 dest 74.125.71.99:80
LVS從調度列表中選出一台伺服器,例如是192.168.1.201:80。該報文的dest目標地址將會被改寫為192.168.1.201:80,並將它發送給選出的Apache Server
source 220.181.112.143:3879 dest 192.168.1.201:80
從Apache Server返回到LVS的響應報文如下:
source 192.168.1.201:80 dest 220.181.112.143.3879
這裡source地址是Apache Server所在的內網地址,響應報文的源地址會被改寫為LVS的地址74.125.71.99:80,再將報文發送給使用者
source 74.125.71.99:80 dest 220.181.112.143.3879
這樣,使用者認為是從LVS(74.125.71.99:80)得到正確的響應,而不會知道該請求是Apache Server 192.168.1.201還是伺服器Apache Server 192.168.1.202處理的,從而完成了內網地址與外網地址的轉換。
NAT模式的最大的優點在於:
1.節省外網IP
不佔用外網IP地址,對於IPV4地址短缺的現狀,是個不錯的選擇。
2.非侵入性
不需要對Apache Server做任何設定,只需要一個內網IP地址即可,對使用者來說,內部的Apache Server是透明的
還有一點很重要,在NAT模式工作的LVS的Linux系統上不需要修改MTU的大小,完全輸入一種非侵入式,輕量級的
做法。
3.安全性
NAT的網路結構呈現為一種類似防火牆的私人網結構,通過內部IP地址,將服務結點池
同互連網隔離開來。服務結點無法和用戶端直接通訊,不論是請求資料還是應答資料,都需要經過負載平衡器進行IP
包處理工作,方便一些集中處理操作。
NAT模式的缺點在於:
要對進入和流出叢集的網路包進行改寫包頭地址的工作,在負荷比較重的時候會影響整個叢集的效能,負載平衡器容易成為瓶頸。
為瞭解決NAT模式出現瓶頸,可以使用DR與TUN模式改造,下次有時間再寫。