天天看點

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所示:

Linux群集LVS簡介

圖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方式發行。

繼續閱讀