目錄
- 前言
- (1)輪轉調度(Round-Robin Scheduling)算法
- (2)加權輪轉調度(Weighted Round-Robin Scheduling)算法
- (3)隨機均衡調度(Random Scheduling)算法
- (4)加權隨機均衡調度(Weighted Random Scheduling)算法
- (5)最小連接調度(Least-Connection Scheduling)算法
- (6)加權最小連接調度(Weighted Least-Connection Scheduling)算法
- (7)目標地址散列調度(Destination Hashing Scheduling)算法
- (8)源地址散列調度(Source Hashing Scheduling)算法
- (9)基于局部性的最少鏈接調度(Locality-Based Least ConnectionsScheduling)算法
- (10)帶復制的基于局部性最少鏈接調度(Locality-Based Least Connectionswith Replication Scheduling)算法
- (11)響應速度均衡調度(Response Time Scheduling)算法
- (12)處理能力均衡調度(Processing Capacity Scheduling)算法
- (13)DNS均衡調度(DNS Scheduling)算法
前言
所謂負載,一般指處理節點的CPU負載、MEM利用率、網絡負載、可用的緩沖區、應用系統負載、用戶數量以及其他的各種系統資源的當前狀態信息。所謂負載均衡,是指處理節點的負載信息通過某代理軟件傳遞給均衡器,由均衡器做出決策并對負載進行動態分配,從而使集群中各處理節點的負載相對趨于平衡。
要實現
(1)為用戶提供更好的訪問質量。
(2)提高服務器響應速度。
(3)提高服務器及其他資源的利用效率。
(4)避免了網絡關鍵部位出現單點失效。
(5)解決網絡擁塞問題,服務就近提供,實現地理位置無關性。
衡量服務器性能和當前運行情況的有效衡量指標包括:
(1)CPU利用率。
(2)內存使用率。
(3)帶寬利用率。
(4)硬盤IO吞吐率和網絡IO吞吐率。
(5)單位時間內完成的服務次數。
(6)單位時間內連接客戶數
(7)完成一個請求任務所用的響應時間。
理想的負載指標應滿足以下條件:測量開銷低,能體現所有競爭資源上的負載,各負載指標在測量及控制上彼此獨立。
在引入負載均衡方案時不管是采用哪種方式都需要考慮以下問題:
(1)采用負載均衡方案后,服務器接收和轉發數據報的速度及負載均衡的整體檢測能力是首先要考慮的重點問題。
(2)負載均衡方案應能滿足網絡流量不斷增長的需求,能均衡不同操作系統和硬件平臺之間的負載,能均衡不同流量的負載。
(3)負載均衡設備自身出現故障時應該有良好的冗余解決方案,保證可用性,避免系統遭受重大損失。
(4)采用靈活、直觀和安全的管理方式,這樣便于安裝、配置、維護和監控,提高工作效率,避免差錯
下面介紹幾種常見的負載均衡算法:
(1)輪轉調度(Round-Robin Scheduling)算法
假設所有服務器處理性能相同,將外部請求按順序輪流分配到集群中的服務器上。這種算法的優點是其簡潔性,無需記錄當前所有連接的狀態,是一種無狀態調度算法,但是不適用于服務器組中處理性能不一的情況,而且當請求服務時間變化較大時,容易導致服務器間的負載不平衡。
(2)加權輪轉調度(Weighted Round-Robin Scheduling)算法
為保證處理能力強的服務器處理更多的訪問流量,用相應的權值表示服務器的處理性能,將請求數目按權值的比例分配給各服務器。調度器可以自動詢問服務器的負載情況,并動態地調整其權值。這種均衡算法也是一種無狀態調度算法,但可以解決服務器間性能不一的情況,能確保高性能的服務器得到更多的使用率,避免低性能的服務器負載過重。
(3)隨機均衡調度(Random Scheduling)算法
把來自網絡的請求隨機分配給各個服務器。
(4)加權隨機均衡調度(Weighted Random Scheduling)算法
此種均衡算法類似于加權輪轉算法,不過在處理請求分擔時是個隨機選擇的過程。
(5)最小連接調度(Least-Connection Scheduling)算法
該算法是一種動態調度算法,通過服務器中當前所活躍的連接數來估計服務器的負載情況,把新的連接請求分配到當前連接數最小的服務器。但是,當各個服務器的處理能力不同時,該算法并不理想。
(6)加權最小連接調度(Weighted Least-Connection Scheduling)算法
用相應的權值表示各個服務器的處理性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢服務器的負載情況,并動態地調整其權值。
(7)目標地址散列調度(Destination Hashing Scheduling)算法
根據請求的目標 IP地址,將其作為散列鍵(Hash Key),通過散列(Hash)函數將這個目標IP地址映射到一臺可用且未超載的服務器,將請求發送到該服務器,屬于靜態映射算法。
(8)源地址散列調度(Source Hashing Scheduling)算法
與目標地址散列調度算法相反,根據請求的源 IP地址,作為散列鍵(HashKey),通過散列函數將請求的源IP地址映射到一臺可用且未超的服務器,將請求發送到該服務器。除了將請求的目標IP地址換成請求的源IP地址,該算法采用的散列函數與目標地址散列調度算法相同,算法流程與目標地址散列調度算法的基本相似。在實際應用中,源地址散列調度和目標地址散列調度可以結合使用在防火墻集群中,它們可以保證整個系統的唯一出入口。
(9)基于局部性的最少鏈接調度(Locality-Based Least ConnectionsScheduling)算法
找出請求的目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;否則用“最少鏈接”的原則選出一個可用的服務器。算法的設計目標是在服務器的負載基本平衡情況下將相同目標IP地址的請求調度到同一臺服務器,來提高各臺服務器的訪問局部性和主存Cache命中率。
(10)帶復制的基于局部性最少鏈接調度(Locality-Based Least Connectionswith Replication Scheduling)算法
與基于局部性的最少鏈接調度算法的不同之處在于,它要維護從一個目標IP地址到一組服務器的映射,而不是從一個目標IP地址到一臺服務器的映射。該算法找出請求的目標IP地址對應的服務器組,按“最少鏈接”原則從服務器組中選出一臺服務器,若服務器可用且沒有超載,將請求發送到該服務器;否則按“最少鏈接”原則從這個集群中選出一臺服務器,將該服務器加入到服務器組中,再將請求發送到該服務器。另外,若該服務器組有一段時間未被修改,則將最忙的服務器從服務器組中刪除,以降低復制的程度。
(11)響應速度均衡調度(Response Time Scheduling)算法
負載均衡設備對內部各服務器發出一個探測請求,然后由對探測請求響應最快的一臺服務器來響應客戶端的服務請求。
(12)處理能力均衡調度(Processing Capacity Scheduling)算法
負載均衡設備記錄集群內部處理負荷(根據服務器CPU型號、CPU數量、內存大小及當前連接數等換算而成),將服務請求分配給負荷最輕的服務器。由于考慮到了內部服務器的處理能力及當前網絡運行狀況等不同情形,因此這種均衡算法相對來說更加精確,尤其適合運用到第7層(應用層)負載均衡的情況,但附加開銷也較大。
(13)DNS均衡調度(DNS Scheduling)算法
分處在不同地理位置的負載均衡設備,收到同一個客戶端的域名解析請求,并在同一時間內,把此域名解析成各自相對應服務器的IP地址,并返回給客戶端,客戶端將以最先收到的域名解析IP地址來繼續請求服務,而忽略其他的IP地址響應。