web服務與高可用集群原理詳解


1、集群特點
  1>高性能
    提高處理性能的能力一直是集群技術研究的一個重要目標之一
  2>低成本
    在達到同樣性能的條件下,采用計算機集群比采用同等運算能力的大型計算機具有更高的性價比
  3>高可擴展性
    通常情況下,用戶若想擴展系統能力,不得不購買更高性能的服務器,才能獲得額外所需的CPU 和存儲器。如果采用集群技術,則只需要將新的單個服務器加入現有集群中即可,對於客戶而言,服務器無論從連續性還是性能上都幾乎沒有變化,系統在不知不覺中完成了升級。
  4>高可靠性
  集群技術使系統在故障發生時仍可以繼續工作,將系統停機時間減到最小。集群系統在提高系統的可靠性的同時,也大大減小了系統故障帶來的業務損失。

2、集群的優勢
  1>性能/價格比
  網絡服務的工作負載通常是大量相互獨立的任務,通過一組服務器分而治之,可以獲得很高的整體性能。組成集群系統的PC服務器或RISC服務器和標准網絡設備因為大規模生產降級成本,價格低,具有較高的性能/價格比。
  2>可伸縮性
  集群系統中的結點數目可以增長到幾千個,乃至上萬個,其伸縮性遠超過單台超級計算機。
  3>高可用
  在硬件和軟件上都有冗余,通過檢測軟硬件的故障,將故障屏蔽,由存活結點提供服務,可實現高可用性。
  4>透明性
  客戶端應用程序與集群系統交互時,就像與一台高性能、高可用的服務器交互一樣,客戶端無需做任何修改。部分服務器的切入切出不會中斷服務,這對用戶也是透明的。
  5>可編程性
  在集群系統上,容易開發應用程序。

3、集群分類
  集群計算機按功能和結構可以分成以下幾類:
    負載均衡集群(Load balancing clusters)
    高可用性集群(High-availability (HA)clusters)
    高性能計算集群(High-performance(HPC)clusters)
    科學計算(Grid computing)
  提示:前兩種是互聯網行業最常用的集群模式

4、負載均衡集群
  負載均衡集群為企業提供了更為實用、性價比更高的系統解決方案。負載均衡集群使客戶訪問請求壓力及負載可以在計算機集群中盡可能平均地分攤處理。客戶訪問請求負載通常包括應用程序處理負載和網絡流量負載。這樣的系統非常適合向使用同一組應用程序的大量用戶提供服務。每個節點都可以承擔一定的訪問請求負載壓力,並且可以實現訪問請求在各節點之間動態分配,以實現負載均衡。

  負載均衡集群運行時,一般通過一個或者多個前端負載均衡器將客戶訪問請求分發到后端的一組服務器上,從而達到整個系統的高性能和高可用性。這樣的計算機集群有時也被稱為服務器群(Server Farm)。一般高可用性集群和負載均衡集群都會使用類似技術,或同時具有高可用性與負載均衡的特點。

5、高可用集群
  一般是指當集群中任意一個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上,該過程並不影響整個集群的運行。

  高可用性集群使服務器系統的運行速度和響應速度盡可能快。他們經常利用在多台機器上運行的冗余節點和服務,用來相互跟蹤。如果某個節點失敗,它的替補者將在幾秒鍾或更短時間內接管它的職責。因此,對於用戶而言,集群里的任意一台集群宕機,業務不會受到影響(理論情況)。

6、負載均衡集群:LVS集群體系結構及特點
  1>LVS簡介
  LVS 是 Linux Virtual Server 的簡稱,也就是 Linux 虛擬服務器, 是一個由章文嵩博士發起的自由軟件項目,它的官方站點是 www.linuxvirtualserver.org。在linux2.4內核之后 LVS 已經是 Linux 標准內核的一部分

  使用 LVS 技術要達到的目標是:通過 LVS 提供的負載均衡技術和 Linux 操作系統實現一個高性能、高可用的服務器群集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。

  2>LVS體系結構
使用 LVS 架設的服務器集群系統有三個部分組成:最前端的負載均衡層,用 Load Balancer表示,中間的服務器群組層,用 Server Array 表示,最底端的數據共享存儲層,用 Shared Storage表示。

 

 

   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 技術,LVS 社區提供了一個命名的約定,內容如下表:

 

 

   LVS 集群內部的節點稱為真實服務器(Real Serve),也叫做集群節點。請求集群服務的計算機稱為客戶計算機。與計算機通常在網上交換數據包的方式相同,客戶計算機、Director 和真實服務器使用 IP 地址彼此進行通信。不同架構角色命名情況如下圖:

 

 

  3>LVS工作模式

  LVS 的 IP 負載均衡技術是通過 IPVS 模塊來實現的,IPVS 是 LVS 集群系統的核心軟件,它的主要作用是:安裝在 Director Server 上,同時在 Director Server 上虛擬出一個 IP 地址,用戶必須通過這個虛擬的 IP 地址訪問服務。這個虛擬 IP 一般稱為 LVS 的 VIP,即 Virtual IP。訪問的請求首先經過 VIP 到達負載調度器,然后由負載調度器從 Real Server 列表中選取一個服務節點響應用戶的請求

當用戶的請求到達負載調度器后,調度器如何將請求發送到提供服務的 Real Server 節點,而 Real Server 節點如何返回數據給用戶,是 IPVS 實現的重點技術,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 隧道技術實現虛擬服務器。它的連接調度和管理與 VS/NAT 方式一樣,只是它的報文轉發方法不同,VS/TUN 方式中,調度器采用 IP 隧道技術將用戶請求轉發到某個 Real Server,而這個 Real Server 將直接響應用戶的請求,不再經過前端調度器,此外,對 Real Server 的地域位置沒有要求,可以和 Director Server 位於同一個網段,也可以是獨立的一個網絡。因此,在 TUN 方式中,調度器將只處理用戶的報文請求,集群系統的吞吐量大大提高。

  VS/DR : 即( Virtual Server via D irect Routing )
也就是用直接路由技術實現虛擬服務器。它的連接調度和管理與 VS/NAT 和 VS/TUN 中的一樣,但它的報文轉發方法又有不同,VS/DR通過改寫請求報文的MAC 地址,將請求發送到 Real Server,而 Real Server 將響應直接返回給客戶,免去了 VS/TUN 中的 IP 隧道開銷。這種方式是三種負載調度機制中性能最高最好的,但是必須要求 Director Server 與 Real Server 都有一塊網卡連在同一物理網段上。

 

 

   VS/DR 模式是互聯網使用的最多的一種模式,在 LVS-DR 配置中,Director 將所有入站請求轉發給集群內部節點,但集群內部的節點直接將他們的回復發送給客戶端計算機(沒有通過 Director 回來)。如下圖所示:

 

 

   4>LVS調度算法

  調度方法決定了如何在這些集群節點之間分布工作負荷:
  當 Director 收到來自客戶端計算機訪問它的 VIP 上的集群服務的入站請求時,Director 必須決定那個集群節點應該獲得請求。Director 可用於做出該決定的調度方法分成兩個基本類別:
  固定調度算法:rr,wrr,dh,sh
  動態調度算法:wlc,lblc,lblcr,SED,NQ(后兩種官方站點沒提到)
  10 種調度算法見如下表格:

 

 

  四種常見調度算法:
  輪詢調度( 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,加權最小連接調度在分配新連接請求時盡可能使服務節點的已建立連接數和其權值成正比。

  5>LVS-DR模式工作原理

  首先,來自客戶端計算機 CIP 的請求被發送到 Director 的 VIP。然后 Director 使用相同的 VIP目的 IP 地址將請求發送到集群節點或真實服務器。然后,集群某個節點將回復該數據包,並將該數據包直接發送到客戶端計算機(不經過 director),並且以此回復數據包使用的目的 VIP 地址作為源 IP 地址。因此,實際上是客戶計算機被“欺騙”了,客戶計算機始終認為它正與同一台計算機對話,而實際上它正在發送請求數據包給一台計算機(LB),並從另一台計算機(RS)接收回復的數據包。

 

 

   LVS-DR 模式應用特點:
  (1)所有集群節點 RS 必須和 Director 在相同的物理網段(即同一個局域網中);
  (2)所有客戶端入站(而不是出站)請求由 Director 首先接收,並轉發給集群節點 RS;
  (3)集群節點 RS 通常來說最好帶外部 IP,而不使用 Director 及某固定機器作為默認網關,以便將數據包直接回復給客戶端計算機,且不會產生回包的瓶頸;
  (4)所有集群節點 RS 上必須在 lo 網卡上綁定 VIP 地址,以便驗證通過目的 IP 非 RS 的數據包;
  (5)由於所有集群節點 RS 上必須在 lo 網卡上綁定 VIP 地址,因此,帶來 arp 問題,即集群節點RS 默認會相應發往 Director VIP 的數據包。因此要對所有集群節點 RS 做 ARP 抑制處理,把響應 VIP 的請求交給 LVS Director;
  (6)很多操作系統都可以用在集群內部的 RS 真實服務器上只要該操作系統能夠實現 ARP 隱藏,如:Windows,linux,unix;
  (7)LVS/DR 模式不需要開啟調度器轉發功能,這點和 LVS/NAT 模式是不同的。
  (8)LVS/DR Director(服務器數量 100 台)可以比 LVS-NAT Director(服務器數量 10-20 台)承受更多的並發請求和轉發更多的服務器數量。

 

   LVS DR 類型:
    讓前端路由將請求發往 VIP 時,只能是 Dirctor 上的 VIP;
  解決方案:
  (1)靜態地址綁定;
    未必有路由器的配置權限;
    Director 調用時靜態地址綁定將難以適用;
  (2)arptables
    Disable ARP for VIP
    Basically, we have the following commands to disable ARP for VIP at real servers.
    arptables -F
    arptables -A INPUT -d $VIP -j DROP
    arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
  (3) 修改 Linux 內核參數,將 RS 上的 VIP 配置為 lo 接口的別名,限制 Linux僅對對應接口的 ARP 請求做響應;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM