很多團隊會在生產環境中引入Nginx來做負載均衡,下面給大家簡要說說Nginx負載均衡中的6種不同策略。
輪詢
輪詢是默認策略,每個請求按時間順序逐一分配到不同節點,后端各個節點平均處理請求。

平均輪詢
加權輪詢
根據節點的權重進行輪詢,權重越高分配到的請求越多。適用于服務器性能差別比較大的情況,比如硬件配置差別較大,或者新老服務器混用的時候。

加權輪詢,權重高,分配多
least_conn
按節點的連接數來分配,把請求優先分配給連接數少的節點。該策略主要為了解決,各個節點請求處理時間長短不一造成某些節點超負荷的情況。
fair
按節點的響應時間長短來分配,把請求優先分配給響應時間短的節點。該策略可用于節點性能不均衡的情況,也可以防止某個節點突發性能問題還繼續接收同樣多的請求,從而造成雪崩的情況。
ip_hash
按客戶端來源IP的hash結果分配。這樣相同客戶端的請求會被分配到同一個節點上,主要是為了解決session問題。比如,某個用戶的登錄操作,登錄的請求被分配到節點1,對用戶來說他已經登錄成功了。有可能下一刻,該用戶某個需要權限才能訪問的請求被分配到節點2了。但是對節點2來說該用戶是沒有登錄的,會提示用戶沒登錄。

按客戶端ip的hash結果分發
url_hash
按訪問URL的hash結果分配。這樣相同的url會被分配到同一個節點,主要為了提高緩存命中率。比如,為了提高訪問性能,服務端有大量數據或者資源文件需要被緩存。使用這種策略,可以節省緩存空間,提高緩存命中率。

按url的hash結果分發