cluster集羣

集羣定義:
-----------------------------------------------------------------------#
   集羣(cluster)就是一組計算機,它們作爲一個整體向用戶提供一組網絡資源。這些單個的計算機系統 就是集羣的節點(node)。
-----------------------------------------------------------------------#
最常用的三種集羣:
-----------------------------------------------------------------------#
1.  LB,Load Balancing,負載均衡集羣
    定義:即把負載壓力根據某種算法合理分配到集羣中的每一臺計算機上,以減輕主服務器的壓力,降低對主服務器的硬件和軟件要求。
2.  HA,High Availability,高可用集羣,每年在線時間爲99.9%
    優點:高可用集羣的出現是爲了使集羣的整體服務儘可能可用,從而減少由計算機硬件和軟件易錯性所帶來的損 失。如果某個節點失效,它的備援節點將在幾 秒鐘的時間內接管它的職責,可有效防止單點故障。因此,對於用戶而言,集羣永遠不會停機。高可用集羣軟件的主要作用就是實現故障檢查和業務切換的自動化。
這類集羣致力於提供高度可靠的服務。
3.  HP,High Performance,高性能集羣,科學計算集羣(人口統計,人口分析,模擬核武器爆炸實驗)
    優點:這類集羣致力於提供單個計算機所不能提供的強大的計算能力。
------------------------------------------------------------------------#
常用集羣的解決方案:
------------------------------------------------------------------------#
1.負載均衡集羣
  兩種常見的解決方案:
    1)LVS(linux virtual server)
    2)haproxy
2.高可用集羣
  四種常見的解決方案:
    1)heartbeat
    2)corosync openais:RHCS
    3)ultramonkey
    4)keepalive
3.高性能集羣
  常見的解決方案:
    bowerful
------------------------------------------------------------------------#
LVS的介紹:
------------------------------------------------------------------------#
LVS是Linux Virtual Server的縮寫
1.  定義
  LVS是一個開源的軟件,由畢業於國防科技大學的章文嵩博士於1998年5月創立,可以實現LINUX平臺下的簡單負載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務器
2.  LVS的調度方法
  1)四種靜態調度方法(不檢查realserver的連接狀態)
      1》Round-robin(RR)輪調
          ---調度器通過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載。
       2》Weighted round-robin(WRR)加權輪調
           ---根據處理能力的大小來分配權重,從而分配調度次數。
      3》Destination hashing目標地址哈希(散列)
           ---實現針對同一目標地址的請求做固定定向轉發
      4》Source hashing 源地址哈希(散列)
           ---實現針對同一源地址的請求做固定定向轉發
 2)六種動態調度方法 (檢查realserver的連接數和連接狀態)
      兩種狀態 active inactive
      1》LC(Least-connection)同時檢查active連接和inactive連接,誰的連接數目少就把請求轉發給誰(退出了不一定斷開連接了)。
        公式:最大連接數=活動連接數*256 非活動連接
      2》WLC(weighted least-connection)加權最少連接數
         在集羣系統中的服務器性能差異較大的情況下,調度器採用"加權最少鏈接"調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。
        公式:最大連接數=活動連接數*256 非活動連接
              最大連接數/權重
      3》SED(Shortest Expected Delay) 最短期望延遲
        公式:最大連接數=(活動連接數 1) *256
              最大連接數/權重
      4》NQ (Never Queue)永不排隊算法
      5》LBLC
         SED的改進
         Locality-Based Least-Connection (LBLC) 基於本地狀態的最少連接
      6》LBLCR
         Locality-Based Least-Connection with  Replication scheduling帶複製的基於本地狀態的最少連接數
3.  LVS的三種工作模式
  1)network address translation---LVS-NET
   2)netdirect routing ---LVS-DR路由
   3)ip tunneling 隧道
三種模式具體解析:
1)Virtual server via NAT(VS-NAT)
 
   基本特點:
         1)DIP RIP 必須在同一子網
         2)RIP通常是私有地址
         3)Director處理請求的數據包和請求的數據包,directory需要兩張網卡
         4)所有的RIP必須以DIP爲默認網關
         5)net機制可以實現端口映射。
         6)任何操作系統都可以做Realserver
         7)Director壓力很大,可能會成爲瓶頸
 
   優點: 
      集羣中的物理服務器可以使用任何支持TCP/IP操作系統,物理服務器可以分配Internet的保留私有地址,只有負載均衡器需要一個合法的IP地址。
   缺點: 
      擴展性有限。當服務器節點(普通PC服務器)數據增長到20個或更多時,負載均衡器將成爲整個系統的瓶頸,因爲所有的請求包和應答包都需要經過負載均衡器再生。假使TCP包的平均長度是536字節的話,平均包再生延遲時間大約爲60us(在Pentium處理器上計算的,採用更快的處理器將使得這個延遲時間變短),負載均衡器的最大容許能力爲8.93M/s,假定每臺物理服務器的平臺容許能力爲400K/s來計算,負責均衡器能爲22臺物理服務器計算。
   解決辦法: 
      即使是是負載均衡器成爲整個系統的瓶頸,如果是這樣也有兩種方法來解決它。一種是混合處理,另一種是採用Virtual Server via IP tunneling或Virtual Server via direct routing。如果採用混合處理的方法,將需要許多同屬單一的RR DNS域。你採用Virtual Server via IP tunneling或Virtual Server via direct routing以獲得更好的可擴展性。也可以嵌套使用負載均衡器,在最前端的是VS-Tunneling或VS-Drouting的負載均衡器,然後後面採用VS-NAT的負載均衡器。
 
2)net direct routing---LVS-DR路由
   基本特點;
       1)Director和Cluster要在同一網絡中
       2)RIP的地址可以爲公有地址
       3)Director只處理請求的數據包,而不處理響應
       4)Cluster的網關不可爲DIP,應是路由ip
       5)不能重新映射端口,端口必須保持一致
       6)大多數操作系統可實現realserver
       7)這種模型可以帶動更多的realserver
       7)這種模型可以帶動更多的realserver
   模型剖析:
       1) 數據包在節點間傳輸靠的是MAC,通過ARP的廣播解析IP到MAC;此種模型中Director仍有VIP、DIP;Real server有VIP、RIP;
       2)Director及real server 都連接到一個Switch上;
       3) Director及real server 都配置的有VIP;
       4) 相同的IP,爲防止衝突,在 real server 上採取手段隱藏起VIP地址,使其對請求VIP地址解析的ARP請求不作響應,這樣解析到的VIP地址即爲Director,數據包線傳輸到Director;
       5) Director 接收到數據包後,根據算法找到某個real server ,並且修改數據包中的目的MAC地址爲該real server的Mac,然後通過       Switch轉發該數據包;此時,該數據包的源ip仍未CIP,目標ip爲VIP;
       6)real server接收到數據包後(包中的VIP、目的MAC均匹配自己),處理該包,返回的數據直接通過Switch出去並過Router傳回Client。
 
   優點: 
       負載均衡器只是分發請求,應答包通過單獨的路由方法返回給客戶端。與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做爲物理服務器,其中包括:Linux、Solaris 、FreeBSD 、windows、IRIX 6.5;HPUX11等。
   不足: 
       要求負載均衡器的網卡必須與物理網卡在一個物理段上。
3)ip tunneling隧道
   基本特點:
        Director和Cluster不在同一網絡中
        RIP必須是公網地址,不能是私有地址
        Director只處理請求的數據包,不處理響應數據包
        不能重新映射端口,端口必須保持一致
        只有支持隧道協議的服務器才能作爲RealServer
   優點:
       負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一臺負載均衡能爲超過100臺的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個 Virtual Server能達到1G的吞吐量。
   缺點:
       但是,這種方式需要所有的服務器支持”IP Tunneling”(IP Encapsulation)協議
 
三種IP負載均衡技術的優缺點比較:
   | VS/NAT     VS/TUN      VS/DR
---------------------|--------------------------------------------------
服務器操作系統    |任意      支持隧道       多數          
服務器網絡      | 私有網絡    局域網/廣域網  局域網
服務器數目(100M網絡) |10-20      100       多(100)
服務器網關      |負載均衡器   自己的路由    自己的路由
效率         |一般      高        最高
------------------------------------------------------------------------#
LVS的調度算法:
------------------------------------------------------------------------#
1.靜態調度方法(不檢查realserver的連接狀態)
      1)Round-robin(RR)輪調
      2)Weighted round-robin(WRR)加權輪調
           ---根據處理能力的大小來分配權重,從而分配調度次數。
      3)Destination hashing目標地址哈希(散列)
           ---實現針對同一目標地址的請求做固定定向轉發
      4)Source hashing 源地址哈希(散列)
           ---實現針對同一源地址的請求做固定定向轉發
2.動態調度方法 (檢查realserver的連接數和連接狀態)
      兩種狀態 active inactive
      1)LC(Least-connection)最少連接數
           同時檢查active連接和inactive連接,誰的連接數目少就把請求轉發給誰(退出了不一定斷開連接了)。
        公式:最大連接數=活動連接數*256+非 活動連接
      2)WLC(weighted least-connection)加權最少連接數
           lvs需要裝在調度節點上,接受用戶發來的請求並將其轉發到後臺真正提供服務的服務器(real server)
        公式:最大連接數=活動連接數*256+非活動連接
              最大連接數/權重
      3)SED(Shortest Expected Delay) 最短期望延遲
        公式:最大連接數=(活動連接數+1) *256
              最大連接數/權重
      4)NQ (Never Queue)永不排隊算法
            無需隊列。如果有臺 realserver的連接數=0就直接分配過去,不需要在進行sed運算
      5)LBLC  基於局部性的最少鏈接
         SED的改進
         Locality-Based Least-Connection (LBLC)“基於局部性的最少鏈接”
         調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用“最少鏈接” 的原則選出一個可用的服務器,將請求發送到該服務器。 基於本地狀態的最少連接
        
      6)LBLCR  帶複製的基於局部性最少鏈接
         Locality-Based Least-Connection with Replication scheduling
        調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不同之處是它要維護從一個目標 IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按“最小連接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度。
------------------------------------------------------------------------#
 轉自:http://blog.chinaunix.net/uid-25749499-id-2759787.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章