一、Linux虛擬伺服器簡介 基於中軟Linux的虛擬伺服器(Linux Virtual Server,即LVS)是一個具有高可用性特點的負載平衡叢集系統。該系統可以提供與伺服器節點的數量、效能成正比的負載能力,有效提高服務的輸送量、可靠性、冗餘度、適應性,效能價格比高。同時,LVS也是利用低端裝置實現高端伺服器效能的有效途徑。 中軟Linux虛擬伺服器(Linux Virtual Server,即LVS)是建立在一個主控伺服器(director)及若干真實伺服器(real-server)所組成的叢集之上。real- server負責實際提供服務,主控伺服器根據指定的調度演算法對real-server進行控制。而叢集的結構對於使用者來說是透明的,用戶端只與單個的 IP(叢集系統的虛擬IP)進行通訊,也就是說從用戶端的視角來看,這裡只存在單個伺服器。 Real-server可以提供眾多服務,如 ftp, http, dns, telnet, nntp, smtp 等。主控伺服器負責對Real-Server進行控制。用戶端在向LVS發出服務要求時,Director會通過特定的調度演算法來指定由某個Real- Server來應答請求,而用戶端只與Load Balancer的IP(即虛擬IP,VIP)進行通訊。
二、優點 * 提高輸送量:為獲得更高的輸送量,在LVS中增加real-servers,其開銷只是線性增長;而如果我們選擇更換一台更高效能的伺服器來獲得相當的輸送量,其開銷要大得多,而且被替換掉的舊伺服器會造成資源的浪費。 * 冗餘:如果LVS中某real-server由於需要升級或其它原因而停止服務,其退出以及恢複工作,並不會造成整個LVS對用戶端服務的中斷。 * 適應性:不管是需要輸送量逐漸地變化(因日常事務量變化),還是快速地變化(因突發事務量變化),伺服器數量的增減對於用戶端都是透明的。
三、結構圖
傳統的“用戶端/伺服器”的關係在LVS中仍舊適用,原因在於: * 所有伺服器的IP地址都映射為一個IP(即VIP),用戶端只能看見此IP地址 * 所有伺服器都認為它與用戶端是直接聯絡的。 一個LVS的基礎設定
四、基本原理及功能 事實上,director的主要作用類似於一個路由器,但它含有為完成LVS功能所設定的路由表。這些路由表允許director把屬於LVS設定服務的包轉寄到real-servers。如果http(連接埠80)是LVS設定服務,那麼這些包都會被director轉寄,而director並不監聽 VIP:80。 director使用三種不同的轉寄方法 1、VS-NAT:基於網路位址轉譯(network address translation ,NAT) 2、VS-DR :直接路由(direct routing,DR),包上的MAC地址被更改,然後被轉寄到real-server 3、VS-Tun :隧道(tunnelling) ,包被IPIP封裝,然後被轉寄到real-server。 VS-NAT方式實現較為容易,只需要一個功能tcpip棧,缺點在於輸送量不夠大,而且支援的real-server數有限。而VS-DR方式則輸送量較大,並支援大量的real-server。VS-TUN方式的特點和VS-DR 相似,不過主要用於real-server分布在網際網路之上的情況, real-servers對於director可以是遠端,real-servers之間可以處於不同網段。不過,VS-DR和VS-TUN轉寄方式需要對real-server的ifconfig和路由表進行修改。 LVS可以提供幾乎所有的服務(單連接埠和2連接埠服務),除了VS-DR和VS-Tun不可以提供從real-servers進行初始化已連線的服務(有identd,rsh)。 Real-servers可以是相同的,提供相同的服務(如http ,ftp),檔案系統保持內容上的一致,這種類型的LVS用來提高可服務用戶端數量。Real-server也可以不同,有各自不同的服務或作業系統。
五、VS-NAT(基於網路位址轉譯,network address translation ,NAT) VS-NAT是LVS最基本的方法,如果想要設定一個用於測試的LVS,這是一個最簡單的方法。 當客戶發出請求,director會將接受到的包的目標地址修正為某個real-server,並將其轉寄到real-server。Real-server的回複會發到director,director將回複包的源地址改寫為VIP 不像VS-DR和VS-TUN,real-server只需要一個功能tcpip棧。Real-server可以是任意作業系統,在real-server上也不必做什麼配置修改(除了在路由表中,需要把real-server的預設閘道設為director)。 為VS-NAT方式的拓補和工作流程:
Director接到來自client的請求包後,根據調度演算法選擇一個real- server,解析出此real-server的MAC地址,並且向此MAC發送包含一個IP datagram的鏈路層包。Real-server收到包後,恢複IP datagram,尋找路由表後發現這個VIP就在本地(裝置lo:0,non-arp),移交給連接埠監聽器。因為Real-server收到從CIP- >VIP的包,構造回複包時就是VIP->CIP。Real-server尋找路由表,並通過到client的預設gateway發送回複。回複不經過director。 在real-server上所需做的工作就是配置一個non-arping的lo:0裝置。並且服務需要監聽VIP的相應連接埠。 VS-DR方式輸送量較大,支援的real-server數量較多。
七、VS-Tun(隧道,tunnelling) 這種方式是基於VS-DR方式的,不同的只是director將包IPIP封裝,然後轉寄到real-server。VS-TUN的real- servers相對於director可以遠程;而且每個real-server都可以在單獨的網路上,但需要在路由器上做工作,允許源地址為VIP的輸出包。 配置方法和要求與VS-DR方式類似。只是需要將lo:0裝置換為tunl0裝置,其對應模組為ipip。