1、輪詢 (round-robin)
輪詢為負載均衡中較為基礎也較為簡單的算法,它不需要配置額外參數。假設配置文件中共有 M 臺服務器,該算法遍歷服務器節點列表,并按節點次序每輪選擇一臺服務器處理請求。當所有節點均被調用過一次后,該算法將從第一個節點開始重新一輪遍歷。
特點:
由于該算法中每個請求按時間順序逐一分配到不同的服務器處理,因此適用于服務器性能相近的集群情況,其中每個服務器承載相同的負載。但對于服務器性能不同的集群而言,該算法容易引發資源分配不合理等問題。
2、加權輪詢
為了避免普通輪詢帶來的弊端,加權輪詢應運而生。在加權輪詢中,每個服務器會有各自的 weight。一般情況下,weight 的值越大意味著該服務器的性能越好,可以承載更多的請求。該算法中,客戶端的請求按權值比例分配,當一個請求到達時,優先為其分配權值最大的服務器。
特點:
加權輪詢可以應用于服務器性能不等的集群中,使資源分配更加合理化。
其核心思想是,遍歷各服務器節點,并計算節點權值,計算規則為 current_weight 與其對應的 effective_weight 之和,每輪遍歷中選出權值最大的節點作為最優服務器節點。其中 effective_weight 會在算法的執行過程中隨資源情況和響應情況而改變。
3、IP 哈希(IP hash)
ip_hash 依據發出請求的客戶端 IP 的 hash 值來分配服務器,該算法可以保證同 IP 發出的請求映射到同一服務器,或者具有相同 hash 值的不同 IP 映射到同一服務器。
特點:
該算法在一定程度上解決了集群部署環境下 Session 不共享的問題。
推薦教程:nginx教程