負載均衡就是將負載分攤到不同的服務單元,即可保證服務的可用性,又保證響應足夠的快,給使用者很好的體驗,
nginx的負載均衡可以劃分為兩大類,內建策略和擴充套件策略。內建策略包括加權輪詢和ip hash,在預設的情況下這兩種策略會編譯進nginx核心中,只需要在nginx中配置指明引數即可。
1.加權輪詢
輪詢的原理很簡單,首先我們介紹一下輪詢的基本流程。如下是處理一次請求的流程圖:
圖中有兩點需要注意,第一,如果可以把加權輪詢演算法分為先深搜尋和先廣搜尋,那麼nginx採用的是先深搜尋演算法,即將首先將請求都分給高權重的機器,直到該機器的權值降到了比其他機器低,才開始將請求分給下乙個高權重的機器;第二,當所有後端機器都down掉時,nginx會立即將所有機器的標誌位清成初始狀態,以避免造成所有的機器都處在timeout的狀態,從而導致整個前端被夯住。
2. ip hash
ip hash是nginx內建的另乙個負載均衡的策略,流程和輪詢很類似,只是其中的演算法和具體的策略有些變化,如下圖所示:
fair策略是擴充套件策略,預設不被編譯進nginx核心。其原理是根據後端伺服器的響應時間判斷負載情況,從中選出負載最輕的機器進行分流。這種策略具有很強的自適應性,但是實際的網路環境往往不是那麼簡單,因此要慎用。
4. 通用hash、一致性hash
這兩種也是擴充套件策略,在具體的實現上有些差別,通用hash比較簡單,可以以nginx內建的變數為key進行hash,一致性hash採用了nginx內建的一致性hash環,可以支援memcache。
對上面的集中負載均衡演算法進行測試(測試工具polygraph),考察下面三個關鍵的測試指標:
均衡性:是否能夠將請求均勻的傳送給後端
一致性:同乙個key的請求,是否能落到同一臺機器
容災性:當部分後端機器掛掉時,是否能夠正常工作
nginx 負載均衡演算法
1 輪詢 就是按照時間順序分配下乙個請求的伺服器。2 權值輪詢 給每乙個伺服器加上權值,權值和分配的請求成正比,比較適應於伺服器配置不均的情況。upstream backend 3 ip雜湊 根據ip的雜湊值分配,這樣每個ip每次訪問的伺服器都相同,這樣session的處理會容易些。upstream...
Nginx 負載均衡演算法
1 輪詢 預設 每個請求按順序逐一分配到不同的伺服器,如果某台伺服器宕機,自動剔除故障系統,整個服務保證可用 2 weight 輪詢加權 weight的值越大分配到的訪問概率越高 upstream bakend 3 ip hash 每個請求按訪問ip的雜湊結果分配,使來自同乙個ip的訪客固定訪問一台...
Nginx負載均衡演算法
目前只有思路,過兩天上 伺服器 權重 a 5 b 3 c 2 1 總的權重是10,先隨機出乙個數字 肯定是10以內的數字 2 然後遍歷權重的陣列 5,3,2 乙個乙個的去比較 核心 遍歷ip 拿到權重weight if offset 數形結合 權重座標 0 5 8 10 a b c 如果offset...