叢集系列二(LVS的演算法)

來源:互聯網
上載者:User

  當一個director收到一個進來的請求,發現其訪問的是一個叢集服務,於是就根據某種標準,從後端的伺服器節點選擇一個來進行請求的響應,這種選擇的機制就是lvs調度演算法。
(1)靜態調度方法  fixed  scheduling
      不關心當前串連的活動和非使用中,不檢查realservers的串連狀態
   相應演算法:
   1,輪叫調度(Round-Robin Scheduling)
輪叫調度演算法就是以輪叫的方式依次將請求調度不同的伺服器,然後進行相應的處理,這種演算法的優點是其簡潔性,它無需記錄當前所有串連的狀態,所以它是一種無狀態調度。
   2,加權輪叫調度(Weighted Round-Robin Scheduling)
加權輪調演算法用於區分後端伺服器響應能力,權重越大分配的串連越多,可以解決伺服器間效能不一的情況,它用相應的權值表示伺服器的處理效能,伺服器的預設權值為1。假設伺服器A的權值為1,B的權值為2,則表示伺服器B的處理效能是A的兩倍。它是按權值的高低和輪叫方式分配請求到各伺服器,權值高的伺服器先收到的串連,權值高的伺服器比權值低的伺服器處理更多的串連,相同權值的伺服器處理相同數目的串連數。
   3,目標地址散列調度(Destination Hashing Scheduling)
目標地址hash演算法以目標地址為標準,針對目標地址的請求進行定向轉寄,能夠實現來自同一使用者的同一請求轉寄到同一台伺服器上(基於緩衝的架構,能夠提高緩衝的命中率),它通過一個散列(Hash)函數將一個目標IP地址映射到一台伺服器。目標地址散列調度演算法先根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。
  4,源地址散列調度(Source Hashing Scheduling)
源地址hash ,以源地址為標準,將來自同一地址的使用者轉寄給同一網路,演算法正好與目標地址散列調度演算法相反,它根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。它採用的散列函數與目標地址散列調度演算法的相同。它的演算法流程與目標地址散列調度演算法的基本相似。在實際應用中,源地址散列調度和目標地址散列調度可以結合使用在防火牆叢集中,它們可以保證整個系統的唯一出入口。
   靜態調度演算法的缺陷:不能考慮後台伺服器當前的狀態                             
(2)動態調度方法   dynamic  scheduling
    優點:能夠基於後台伺服器當前的活動串連數,進行請求的分配,更合理,避免了一台伺服器負載太多,而另外的伺服器處於閑置狀態。
     兩種標準:
         非使用中的串連(但仍在串連狀態)
         活動狀態的串連數
      例:ssh,telnet均是基於狀態的串連,需要即時進行檢測串連的狀態,而hhtp服務則是基於無狀態的串連
     相應的演算法:
      1,最小串連調度(Least-Connection Scheduling)
最少串連調度是把新的串連請求分配到當前串連數最小的伺服器,它通過伺服器當前所活躍的串連數來估計伺服器的負載情況。調度器需要記錄各個伺服器已建立串連的數目,當一個請求被調度到某台伺服器,其串連數加1;當串連中止或逾時,其串連數減一。同時檢查非使用中串連數和活動狀態串連數,基於overhead決定,誰的overhead小就會接受下一次請求。
        例:overhead=當前活動狀態的串連數*256+當前處於非使用中 
      2,加權最小串連調度(Weighted Least-Connection Scheduling)  
加權最少串連數是最小串連調度的超集,各個伺服器用相應的權值表示其處理效能。伺服器的預設權值為1,系統管理員可以動態地設定伺服器的權值。加權最小串連調度在調度新串連時儘可能使伺服器的已建立串連數和其權值成比例,是最常用的演算法。        例:overhead=(當前活動狀態的串連數*256+當前處於非使用中的串連數)/權重
      3,最短的期望的延遲(Shortest Expected Delay Scheduling SED)  
最短期望延遲,是對wlc演算法的一種改進,不查看非狀態串連數,而且在計算overhead時要把當前的活動狀態串連數加一。
      例:overhead=((當前活動狀態的串連數+1)*256)/權重
      4,最少隊列調度(Never Queue Scheduling NQ) 
最少隊列調度不查看非活動串連數,只查看當前的活動狀態,保證主機不會閑置;無需隊列。如果有台realserver的串連數=0就直接分配過去,不需要在進行sed運算。
      5,基於局部性的最少連結(Locality-Based Least Connections Scheduling)
 基於局部性的最少連結演算法和dh相似,是動態演算法,考慮背景實際情況進行輪調,支援權重,在wlc的基礎上;目前主要用於Cache叢集系統,因為在Cache叢集中客戶請求報文的目標IP地址是變化的。這裡假設任何後端伺服器都可以處理任一請求,演算法的設計目標是在伺服器的負載基本平衡情況下,將相同目標IP地址的請求調度到同一台伺服器,來提高各台伺服器的訪問局部性和主存Cache命中率,從而整個叢集系統的處理能力。LBLC調度演算法先根據請求的目標IP地址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於其一半的工作負載,則用“最少連結”的原則選出一個可用的伺服器,將請求發送到該伺服器。
      6,帶複製的基於局部性最少連結(Locality-Based Least Connections with Replication Scheduling)
帶複製的基於局部性最少連結也是針對目標IP地址的負載平衡,目前主要用於Cache叢集系統。它與LBLC演算法的不同之處是它要維護從一個目標IP地址到一組伺服器的映射,而LBLC演算法維護從一個目標IP地址到一台伺服器的映射。對於一個“熱門”網站的服務要求,一台Cache 伺服器可能會忙不過來處理這些請求。這時,LBLC調度演算法會從所有的Cache伺服器中按“最小串連”原則選出一台Cache伺服器,映射該“熱門”網站到這台Cache伺服器,很快這台Cache伺服器也會超載,就會重複上述過程選出新的Cache伺服器。這樣,可能會導致該“熱門”網站的映像會出現在所有的Cache伺服器上,降低了Cache伺服器的使用效率。LBLCR調度演算法將“熱門”網站映射到一組Cache伺服器(伺服器集合),當該“熱門”網站的請求負載增加時,會增加集合裡的Cache伺服器,來處理不斷增長的負載;當該“熱門”網站的請求負載降低時,會減少集合裡的Cache伺服器數目。這樣,該“熱門”網站的映像不太可能出現在所有的Cache伺服器上,從而提供Cache叢集系統的使用效率。LBLCR演算法先根據請求的目標IP地址找出該目標IP地址對應的伺服器組;按“最小串連”原則從該伺服器組中選出一台伺服器,若伺服器沒有超載,將請求發送到該伺服器;若伺服器超載;則按“最小串連”原則從整個叢集中選出一台伺服器,將該伺服器加入到伺服器組中,將請求發送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度。
作者 “痕久遠”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.