當前位置:
首頁 > 最新 > nginx負載均衡與調度演算法

nginx負載均衡與調度演算法

本公眾號內容大多由平時操作整理記錄,如果有錯誤的地方歡迎留言指正


nginx負載均衡

nginx的負載均衡功能是通過upstream命令實現的,由ngx_http_upstream_module模塊支持,它的負載均衡實現機制比較簡單,容易理解。相比LVS,nginx負載均衡默認後端伺服器具有健康狀檢測功能,檢測方式是基於埠檢測,在後端伺服器比較少的情況下性能突出,如果後端負載節點比較多,所有的請求都從一台代理伺服器進出,容易造成請求阻塞,這種情況可以在nginx代理服務前端增加一層LVS進行分流,nginx代理做多節點來緩解。


nginx負載均衡演算法

1:輪詢(默認的模式),每個請求按時間順序逐一分配到不同的伺服器,如果後端某台伺服器死機,自動剔除故障系統使用戶使用不受影響。

2:權重(weight),指定輪詢的權值,weigth值越大,分配到訪問的概率就越高,只要用於後端伺服器性能不均衡的情況下。

3:ip_hash,每個請求按訪問ip的哈希結果分配,這樣來自同一ip的訪客固定訪問一台後端伺服器。能夠有效解決動態網頁存在的session共享問題。

4:least_conn 最少連接調度演算法,同時考慮伺服器的權重,當server擁有不同的權重時其為wlc,當所有後端主機連接數相同時,則使用wrr,適用於長連接

5:hash key [consistent] 基於指定的key的hash表來實現對請求的調度,此處的key可以直接文本、變數或二者組合

作用:將請求分類,同一類請求將發往同一個upstream server,key值可以用remote_addr,

當使用consistent參數時,將啟用ketama一致性hash演算法,適用於後端是Cache伺服器(如varnish)時使用hashremote_addr consistent;

在http upstream模塊中,可以通過server指令指定後端伺服器的ip地址和埠,同時還可以設定每台後端伺服器在負載均衡中的狀態。

upstream中可附加指令

1:down,表示當前的server不參與負載均衡。

2:backup,預留的備份機,當其他所有非backup的機器出現故障或者忙的時候,才會請求backup機器,因此這台機器的壓力最輕。

3:max_fails,允許請求失敗的次數,默認為1,當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤。

4: fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間,max_fails可以和fail_timeout一起使用。

5: keepalive 連接數N; 為每個worker進程保留的空閑的長連接數量,可節約nginx埠,並減少連接管理的消耗


輪詢負載

http段設置

server 段設置

測試

加權輪詢

http段

將192.168.214.133 權重設為3

測試

ip_hash

測試

least_conn最少連接

測試

hash key:一致性hash

GIF


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux日記 的精彩文章:

MySQL主從複製模式與複製過濾
nginx記錄客戶端真實ip問題與日誌時間格式修改

TAG:Linux日記 |