1. 程式人生 > >F5負載均衡演算法及基本原理

F5負載均衡演算法及基本原理

考慮到服務請求的不同型別、伺服器的不同處理能力以及隨機選擇造成的負載分配不均勻等問題,為了更加合理的把負載分配給內部的多個伺服器,就需要應用相應的能夠正確反映各個伺服器處理能力及網路狀態的負載均衡演算法:

輪循均衡(Round Robin):每一次來自網路的請求輪流分配給內部中的伺服器,從1至N然後重新開始。此種均衡演算法適合於伺服器組中的所有伺服器都有相同的軟硬體配置並且平均服務請求相對均衡的情況。


權重輪循均衡(Weighted Round Robin):根據伺服器的不同處理能力,給每個伺服器分配不同的權值,使其能夠接受相應權值數的服務請求。例如:伺服器A的權值被設計成1,B的權值是3,C的權值是6,則伺服器A、B、C將分別接受到10%、30%、60%的服務請求。此種均衡演算法能確保高效能的伺服器得到更多的使用率,避免低效能的伺服器負載過重。


隨機均衡(Random):把來自網路的請求隨機分配給內部中的多個伺服器。


權重隨機均衡(Weighted Random):此種均衡演算法類似於權重輪循演算法,不過在處理請求分擔時是個隨機選擇的過程。


響應速度均衡(Response Time):負載均衡裝置對內部各伺服器發出一個探測請求(例如Ping),然後根據內部中各伺服器對探測請求的最快響應時間來決定哪一臺伺服器來響應客戶端的服務請求。此種均衡演算法能較好的反映伺服器的當前執行狀態,但這最快響應時間僅僅指的是負載均衡裝置與伺服器間的最快響應時間,而不是客戶端與伺服器間的最快響應時間。


最少連線數均衡(Least Connection):客戶端的每一次請求服務在伺服器停留的時間可能會有較大的差異,隨著工作時間加長,如果採用簡單的輪循或隨機均衡演算法,每一臺伺服器上的連線程序可能會產生極大的不同,並沒有達到真正的負載均衡。最少連線數均衡演算法對內部中需負載的每一臺伺服器都有一個數據記錄,記錄當前該伺服器正在處理的連線數量,當有新的服務連線請求時,將把當前請求分配給連線數最少的伺服器,使均衡更加符合實際情況,負載更加均衡。此種均衡演算法適合長時處理的請求服務,如FTP。


處理能力均衡:此種均衡演算法將把服務請求分配給內部中處理負荷(根據伺服器CPU型號、CPU數量、記憶體大小及當前連線數等換算而成)最輕的伺服器,由於考慮到了內部伺服器的處理能力及當前網路執行狀況,所以此種均衡演算法相對來說更加精確,尤其適合運用到第七層(應用層)負載均衡的情況下。


DNS響應均衡(Flash DNS):在Internet上,無論是HTTP、FTP或是其它的服務請求,客戶端一般都是通過域名解析來找到伺服器確切的IP地址的。在此均衡演算法下,分處在不同地理位置的負載均衡裝置收到同一個客戶端的域名解析請求,並在同一時間內把此域名解析成各自相對應伺服器的IP地址(即與此負載均衡裝置在同一位地理位置的伺服器的IP地址)並返回給客戶端,則客戶端將以最先收到的域名解析IP地址來繼續請求服務,而忽略其它的IP地址響應。在種均衡策略適合應用在全域性負載均衡的情況下,對本地負載均衡是沒有意義的。

2010年04月09日 星期五 17:11


  我們知道,負載均衡器在負載均衡裝置中的作用是至關重要的,它起著承上啟下的作用。一方面接收使用者的網路請求,一方面把請求按照某種演算法轉接到特定的應用伺服器中,實現負載均衡。所以,負載均衡器中的演算法是至關重要的。大多數負載均衡裝置實現了以下多種演算法。

  1、輪詢排程

  輪詢排程(Round Robin Scheduling)演算法就是以輪詢的方式依次將請求排程到不同的伺服器,即每次排程執行i = (i + 1) mod n,並選出第i臺伺服器。演算法的優點是其簡潔性,它無需記錄當前所有連線的狀態,所以它是一種無狀態排程。

  在實際實現過程中,一般會為每臺伺服器設定一個權重值,這就是權重輪詢排程演算法。

   
2、最小連線排程(Least-Connection Scheduling)

  最小連線排程(Least-Connection Scheduling)演算法是把新的連線請求分配到當前連線數最小的伺服器。最小連線排程是一種動態排程演算法,它通過伺服器當前所活躍的連線數來估計伺服器的負載情況。

  在實際實現過程中,一般會為每臺伺服器設定一個權重值,這就是加權最小連線排程(Weighted Least-Connection Scheduling)

  
3、 基於區域性性的最少連結(LBLC)

  基於區域性性的最少連結排程(Locality-Based Least Connections Scheduling,以下簡稱為LBLC)演算法是針對請求報文的目標IP地址的負載均衡排程,目前主要用於Cache集群系統,因為在Cache叢集中客戶請求報文的目標IP地址是變化的。

  LBLC排程演算法先根據請求的目標IP地址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求傳送到該伺服器; 若伺服器不存在,或伺服器超載或有伺服器處於其一半的工作負載,則用“最少連結”的原則選出一個可用的伺服器,將請求傳送到該伺服器。

   4、帶複製的基於區域性性最少連結(LBLCR)

  帶複製的基於區域性性最少連結排程(Locality-Based Least Connections with Replication Scheduling,以下簡稱為LBLCR)演算法也是針對目標IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC演算法的不同之處是它要維護從一個目標IP地址到一組伺服器的對映,而LBLC演算法維護從一個目標IP地址到一臺伺服器的對映。

  LBLCR排程演算法將“熱門”站點對映到一組Cache伺服器(伺服器集合),當該“熱門”站點的請求負載增加時,會增加集合裡的Cache伺服器,來處理不斷增長的負載; 當該“熱門”站點的請求負載降低時,會減少集合裡的Cache伺服器數目。這樣,該“熱門”站點的映像不太可能出現在所有的Cache伺服器上,從而提供Cache集群系統的使用效率。

  
5、目標地址雜湊排程(Destination Hashing Scheduling)

  目標地址雜湊排程(Destination Hashing Scheduling)演算法是針對目標IP地址的負載均衡,但它是一種靜態對映演算法,通過一個雜湊(Hash)函式將一個目標IP地址對映到一臺伺服器。

  目標地址雜湊排程演算法先根據請求的目標IP地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。

  
6、 源地址雜湊排程(Source Hashing Scheduling)

  和目標地址雜湊排程類似,唯一的區別是按照源地址為雜湊函式的雜湊鍵。

  在實際應用中,源地址雜湊排程和目標地址雜湊排程可以結合使用在防火牆叢集中,它們可以保證整個系統的唯一出入口。