Linux羣集LVS簡介

 

一、 LVS簡介
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器, 是一個由章文嵩博士發起的自由軟件項目,它的官方站點是www.linuxvirtualserver.org。現在LVS已經是 Linux標準內核的一部分,在Linux2.4內核以前,使用LVS時必須要重新編譯內核以支持LVS功能模塊,但是從Linux2.4內核以後,已經完全內置了LVS的各個功能模塊,無需給內核打任何補丁,可以直接使用LVS提供的各種功能。
使用LVS技術要達到的目標是:通過LVS提供的負載均衡技術和Linux操作系統實現一個高性能、高可用的服務器羣集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。
(sourceforge.net)等。
二、 LVS體系結構
使用LVS架設的服務器集羣系統有三個部分組成:最前端的負載均衡層,用Load Balancer表示,中間的服務器羣組層,用Server Array表示,最底端的數據共享存儲層,用Shared Storage表示,在用戶看來,所有的內部應用都是透明的,用戶只是在使用一個虛擬服務器提供的高性能服務。
LVS體系結構如圖1所示:

圖1 LVS的體系結構
 

下面對LVS的各個組成部分進行詳細介紹:
 Load Balancer層:位於整個集羣系統的最前端,有一臺或者多臺負載調度器(Director Server)組成,LVS模塊就安裝在Director Server上,而Director的主要作用類似於一個路由器,它含有完成LVS功能所設定的路由表,通過這些路由表把用戶的請求分發給Server Array層的應用服務器(Real Server)上。同時,在Director Server上還要安裝對Real Server服務的監控模塊Ldirectord,此模塊用於監測各個Real Server服務的健康狀況。在Real Server不可用時把它從LVS路由表中剔除,恢復時重新加入。
 Server Array層:由一組實際運行應用服務的機器組成,Real Server可以是WEB服務器、MAIL服務器、FTP服務器、DNS服務器、視頻服務器中的一個或者多個,每個Real Server之間通過高速的LAN或分佈在各地的WAN相連接。在實際的應用中,Director Server也可以同時兼任Real Server的角色。
 Shared Storage層:是爲所有Real Server提供共享存儲空間和內容一致性的存儲區域,在物理上,一般有磁盤陣列設備組成,爲了提供內容的一致性,一般可以通過NFS網絡文件系統共享數據,但是NFS在繁忙的業務系統中,性能並不是很好,此時可以採用集羣文件系統,例如Red hat的GFS文件系統,oracle提供的OCFS2文件系統等。
從整個LVS結構可以看出,Director Server是整個LVS的核心,目前,用於Director Server的操作系統只能是Linux和FreeBSD,linux2.6內核不用任何設置就可以支持LVS功能,而FreeBSD作爲Director Server的應用還不是很多,性能也不是很好。
對於Real Server,幾乎可以是所有的系統平臺,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。

三、 LVS集羣的特點
3.1 IP負載均衡與負載調度算法
負載調度器是根據各個服務器的負載情況,動態地選擇一臺Real Server響應用戶請求,那麼動態選擇是如何實現呢,其實也就是我們這裏要說的負載調度算法,根據不同的網絡服務需求和服務器配置,IPVS實現了一下幾種負載調度算法:

負載調度算法總的分爲:固定調度算法和動態調度算法

靜態調度方法分如下幾種:
RR:Round-robin輪調也叫1:1調度,調度器通過“輪叫”調度算法將外部用戶請求按順序1:1的分配到集羣中的每個Real Server上,這種算法平等地對待每一臺Real Server,而不管服務器上實際的負載狀況和連接狀態。

WRR:Weighted round-robin“加權論調”算法是根據Real Server的不同處理能力來調度訪問請求。可以對每臺Real Server設置不同的調度權值,對於性能相對較好的Real Server可以設置較高的權值,而對於處理能力較弱的Real Server,可以設置較低的權值,這樣保證了處理能力強的服務器處理更多的訪問流量。充分合理的利用了服務器資源。同時,調度器還可以自動查詢Real Server的負載情況,並動態地調整其權值。

DH:Destination hashing目標hash算法,主要作用將同一個用戶的請求儘可能分給同一個Realserver,提高緩存命中率。

SH:Source hashing源地址hash算法,主要應用負載內網訪問外網

動態調度方法分如下幾種:
以當前的Realserver的正在處於活動的連接數和非活動鏈接作爲考慮的標準,個數越少的越會被選中。
活動連接:在tcp中處於established狀態的連接
非活動連接:處於非established連接的狀態,但曾經發起過連接還沒有斷開,但不傳輸數據
 LC:Least-connection最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集羣系統的真實服務器具有相近的系統性能,採用“最小連接”調度算法可以較好地均衡負載。計算方法:overhead=活動的連接數*256+非活動的連接數,若值相同,在列表中選擇處在上邊的。
WLC:Weighted Least Connections“加權最少鏈接調度”是“最少連接調度”的超集,每個服務節點可以用相應的權值表示其處理能力,而系統管理員可以動態的設置相應的權值,缺省權值爲1,加權最小連接調度在分配新連接請求時儘可能使服務節點的已建立連接數和其權值成正比。計算方法:overhead/權重,誰值小給誰,是最優的算法,若不指算法,默認是WLC

SED:Shortest Expected Delay最少期望延遲,在計算值時不過濾非活動連接數,計算方法:overhead(活動連接數+1)*256/權重

NQ:Never Queue從不排隊,若第二個要給沒有連接數的服務器,不至於讓另一個服務器特別閒,在權重差別比較大的時候特別有用。

LBLC:Locality-Based  Least-Connection基於本地的最少連接,DH算法的動態算法,會計算緩存上現在處於活動連接的。

LBLCR:帶複製的基於本地的最少連接,基於icp協議緩存複製來完成的。
 

3.2 高可用性
LVS是一個基於內核級別的應用軟件,因此具有很高的處理性能,用LVS構架的負載均衡集羣系統具有優秀的處理能力,每個服務節點的故障不會影響整個系統的正常使用,同時又實現負載的合理均衡,使應用具有超高負荷的服務能力,可支持上百萬個併發連接請求。如配置百兆網卡,採用VS/TUN或VS/DR調度技術,整個集羣系統的吞吐量可高達1Gbits/s;如配置千兆網卡,則系統的最大吞吐量可接近10Gbits/s。

3.3 高可靠性
LVS負載均衡集羣軟件已經在企業、學校等行業得到了很好的普及應用,國內外很多大型的、關鍵性的web站點也都採用了LVS集羣軟件,所以它的可靠性在實踐中得到了很好的證實。有很多以LVS做的負載均衡系統,運行很長時間,從未做過重新啓動。這些都說明了LVS的高穩定性和高可靠性。

3.4 適用環境
LVS對前端Director Server目前僅支持Linux和FreeBSD系統,但是支持大多數的TCP和UDP協議,支持TCP協議的應用有:HTTP,HTTPS ,FTP,SMTP,,POP3,IMAP4,PROXY,LDAP,SSMTP等等。支持UDP協議的應用有:DNS,NTP,ICP,視頻、音頻流播放協議等。
LVS對Real Server的操作系統沒有任何限制,Real Server可運行在任何支持TCP/IP的操作系統上,包括Linux,各種Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows等。

3.5 開源軟件
LVS集羣軟件是按GPL(GNU Public License)許可證發行的自由軟件,因此,使用者可以得到軟件的源代碼,並且可以根據自己的需要進行各種修改,但是修改必須是以GPL方式發行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章