一)、排程演算法
nginx的upstream指令用於指定proxy_pass和fastcgi_pass所使用的後端伺服器,即nginx的反向**功能,因此可以將兩者結合起來使用以達到負載均衡的目的,而nginx也支援多種排程演算法:
1、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,則會跳過該伺服器分配至下乙個監控的伺服器。並且它無需記錄當前所有連線的狀態,所以它是一種無狀態排程。
2、weight
指定在輪詢的基礎上加上權重,weight和訪問比率成正比,即用於表明後端伺服器的效能好壞,若後端伺服器效能較好則可將大部分請求分配給它,已實現其力所能及。
例如:我後端伺服器172.23.136.148配置:e5520*2 cpu,8g記憶體
後端伺服器172.23.136.148配置:xeon(tm)2.80ghz * 2,4g記憶體
我希望在有30個請求到達前端時,其中20個請求交給172.23.136.148處理,剩餘10個請求交給172.23.136.149處理,就可做如下配置
upstream web_poll
3、ip_hash
每個請求按訪問ip的hash結果分配,當新的請求到達時,先將其客戶端ip通過雜湊演算法進行雜湊出乙個值,在隨後的請求客戶端ip的雜湊值只要相同,就會被分配至同乙個後端伺服器,該排程演算法可以解決session的問題,但有時會導致分配不均即無法保證負載均衡。
例如:upstream web_pool
4、fair(第三方)
按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream web_pool
5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。
例:在upstream中加入hash語句,server語句中不能寫入weight等其他的引數,hash_method是使用的hash演算法
upstream web_pool
LVS排程演算法(上) 靜態排程演算法
lvs的排程方法有十幾中,每種方法的排程標準和適用場景不同。大體有兩大類,分別為固定排程方法或稱為靜態排程方法,另一類是動態排程方法。常用的具體演算法有十種。1 輪詢排程 rr 將所有請求平均的分發到每個集群節點上,即輪流排程。2 加權輪詢排程 wrr 由於不同的伺服器效能不同,因此要考慮讓效能高的...
典型的排程演算法
先來先服務排程演算法 fcfs 從就緒佇列中選擇最先進入該佇列中的的程序。屬於不可剝奪演算法,當長任務先到達系統,就會使得後面的許多短作業等待更長的時間。對長作業有利,對短作業不利 現對sjf和高響應比 有利於cpu繁忙型作業,不利於i o繁忙型作業。短作業優先排程演算法 sjf 從就緒佇列中選擇乙...
HAProxy的排程演算法
haproxy作為乙個負載均衡器,自然會有許多對後端伺服器的排程演算法來供我們使用,那麼接下來我們就來對這些排程演算法進行一一介紹 haproxy可以通過修改balance欄位的值從而修改其排程演算法,balance欄位應用於 default frontend backend 欄位中 balance...