LVS叢集技術

xuanziDy發表於2022-01-19

1、LVS

1.1、LVS是什麼?

LVS是Linux Virtual Server的簡稱,也就是Linux虛擬伺服器.現在LVS已經是 Linux標準核心的一部分.

1.2、LVS可以幹什麼?

透過LVS提供的負載均衡技術和Linux作業系統實現一個高效能、高可用的伺服器群集。它具有良好可靠性、可擴充套件性和可操作性。從而以低廉的成本實現最優的服務效能。

1.3、LVS架設的伺服器叢集系統組成

LK

  • Load Balancer層
    Load Balancer是整個叢集系統的前端,負責把客戶請求轉發到Real Server上。
    Load Balancer透過Ldirectord監測各Real Server的健康狀況。在Real Server不可用時
    把它從群中剔除,恢復時重新加入。
  1. Load Balancer由一臺或者多臺負載排程器(Director Server)組成。
  2. Director的主要作用類似於一個路由器,它含有完成LVS功能所設定的路由表,透過這些路由表把使用者的請求分發給Server Array層的應用伺服器(Real Server)上。
  3. 在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檔案系統等。

二、負載均衡方案

2.1 負載均衡技術的實現方案有以下幾種:

  • 有基於DNS域名輪流解析的方法、
  • 基於客戶端排程訪問的方法
  • 基於應用層系統負載的排程方法
  • 基於IP地址的排程方法
    在這些負載排程演算法中,執行效率最高的是IP負載均衡技術

2.2 IPVS模組

LVS的IP負載均衡技術是透過IPVS模組來實現的,IPVS模組是安裝在Director Server上的。IPVS模組它的主要作用是在Director Server上虛擬出一個IP地址,使用者必須透過這個虛擬的IP地址訪問服務**。這個虛擬IP一般稱為LVS的VIP,即Virtual IP。

訪問的請求首先經過VIP到達負載排程器,然後由負載排程器從Real Server列表中選取一個服務節點響應使用者的請求。

2.2.1 IPVS的負載均衡

當使用者的請求到達負載排程器後,排程器如何將請求傳送到提供服務的Real Server節點?

IPVS模組有三種實現負載均衡的機制,分別是NAT、TUN和DR,詳述如下:

  • VS/NAT(Virtual Server via Network Address Translation)

網路地址翻譯技術實現虛擬伺服器,當使用者請求到達排程器時,排程器將請求報文的目標地址(即虛擬IP地址)改寫成選定的Real Server地址,同時報文的目標埠也改成選定的Real Server的相應埠,最後將報文請求傳送到選定的Real Server。在伺服器端得到資料後,Real Server返回資料給使用者時,需要再次經過負載排程器將報文的源地址和源埠改成虛擬IP地址和相應埠,然後把資料傳送給使用者,完成整個負載排程過程。

  • VS/TUN(Virtual Server via IP Tunneling)

IP隧道技術實現虛擬伺服器。與NAT方式就是報文轉發方法不同,VS/TUN方式中,排程器採用IP隧道技術將使用者請求轉發到某個Real Server,而這個Real Server將直接響應使用者的請求,不再經過前端排程器,此外,對Real Server的地域位置沒有要求,可以和Director Server位於同一個網段,也可以是獨立的一個網路。因此,在TUN方式中,排程器將只處理使用者的報文請求,叢集系統的吞吐量大大提高。

  • VS/DR(Virtual Server via Direct Routing)

直接路由技術實現虛擬伺服器,與前兩種不同的也是轉發方式。VS/DR透過改寫請求報文的MAC地址,將請求傳送到Real Server,而Real Server將響應直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負載排程機制中效能最高最好的,但是必須要求Director Server與Real Server都有一塊網路卡連在同一物理網段上

負載排程器如何動態選擇一臺Real Server響應使用者請求

取決於負載排程演算法, IPVS實現了十種負載排程演算法,這裡詳細介紹最常用的四種排程演算法:

  • 輪叫排程(Round Robin)
    “輪叫”排程也叫1:1排程,排程器透過“輪叫”排程演算法將外部使用者請求按順序1:1的分配到叢集中的每個Real Server上,這種演算法平等地對待每一臺Real Server,而不管伺服器上實際的負載狀況和連線狀態。

  • 加權輪叫排程(Weighted Round Robin)
    “加權輪叫”排程演算法是根據Real Server的不同處理能力來排程訪問請求。可以對每臺Real Server設定不同的排程權值,對於效能相對較好的Real Server可以設定較高的權值,而對於處理能力較弱的Real Server,可以設定較低的權值,這樣保證了處理能力強的伺服器處理更多的訪問流量。充分合理的利用了伺服器資源。同時,排程器還可以自動查詢Real Server的負載情況,並動態地調整其權值。

  • 最少連結排程(Least Connections)
    “最少連線”排程演算法動態地將網路請求排程到已建立的連結數最少的伺服器上。如果叢集系統的真實伺服器具有相近的系統效能,採用“最小連線”排程演算法可以較好地均衡負載。

  • 加權最少連結排程(Weighted Least Connections)
    “加權最少連結排程”是“最少連線排程”的超集,每個服務節點可以用相應的權值表示其處理能力,而系統管理員可以動態的設定相應的權值,預設權值為1,加權最小連線排程在分配新連線請求時儘可能使服務節點的已建立連線數和其權值成正比

  • 基於區域性性的最少連結(Locality-Based Least Connections)

  • 帶複製的基於區域性性最少連結(Locality-Based Least Connections with Replication)

  • 目標地址雜湊(Destination Hashing )

  • 源地址雜湊(Source Hashing)

  • 最短期望延遲(Shortest Expected Delay)

  • 無須佇列等待(Never Queue)

3.高可用、高可靠體現在哪裡

3.1 高可用性

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

3.2 高可靠性

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

3.3 適用環境

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等。


參考資料:

blog.51cto.com/ixdba/552947
zh.linuxvirtualserver.org/node/95

本作品採用《CC 協議》,轉載必須註明作者和本文連結
學過的東西能說出來那是最妙的,能覆盤寫下來那也不錯

相關文章