upstream 調度算法
1.rr
按客戶端請求順序把客戶端的請求逐一分配到不同的后端的服務器,這相當于lvs中的rr算法。如果后端服務器巖機(默認情況下只檢測80端口,如果后端報502,404,403,503,還是會直接返給用戶),巖機服務器會被自動剔除,使用戶訪問不受影響,請求會分配給正常的服務器
2.weight(權重)
在輪詢算法的基礎上加上權重(默認rr+weight),權重輪詢和訪問成正比,權重越大,轉發的請求也就越多??梢愿鶕盏呐渲煤托阅苤付嘀刂荡笮?,可以有效解決新舊服務器性能不均進行請求分配問題
3.ip_hash
每個請求按訪問的ip的hash結果分配,當新的請求到達時,先將其客戶端的ip通過哈希算法出一個值,在最后的請求客戶端,ip的哈希值只要相同,就會被分配至同一臺服務器(lvs負載均衡的-p參數,keepalive配置里的persistene_timeout 50),該調度算法可以解決動態網頁session共享問題,但是有時會導致請求分配不均,即無法保證1:1的負載均衡,在國內所有的公司都是nat上網,多個pc對應一個外部ip。
提示:必須是最前端的服務器,后端也必須直接接應用服務器多數情況不能和權重參數一起使用。
4.fair(第三方,no)動態算法
按照后端服務器rs的響應時間來分配請求,響應時間短的優先分配。
比上面兩個更加智能的負載均衡算法,此種算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據后端服務器的響應時間來分配請求,響應時間短的優先分配,nginx本身不支持fair的,如果需要使用這種調度算法,必須有下載nginx的upstaeam_fair模塊
5.least_conn
最少連接數,哪個機器連接數少,就分發。
6.一致性hash
http://tengine.taobao.org/document_cn/http_upstream_consistent_hash_cn.html
worker_processes 1; http { upstream test { consistent_hash $request_uri; server 127.0.0.1:9001 id=1001 weight=3; server 127.0.0.1:9002 id=1002 weight=10; server 127.0.0.1:9003 id=1003 weight=20; } }
原創文章,作者:Net20_赤羽,如若轉載,請注明出處:http://www.www58058.com/15807