伺服器負載之Nginx

akbarken發表於2014-09-11
負載均衡硬體裝置:如F5 BIG-IP、Citrix NetScaler、Radware
負載均衡軟體:nginx (反向代理功能和靈活的負載均衡策略)
負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應足夠快,給使用者很好的體驗。
nginx的負載均衡策略可以劃分為兩大類:

1.內建策略包含加權輪詢和ip hash,在預設情況下這兩種策略會編譯進nginx核心,只需在nginx配置中指明引數即可。
2.擴充套件策略有很多,如fair、通用hash、consistent hash等,預設不編譯進nginx核心。

加權輪詢:
兩點需要注意,第一,如果可以把加權輪詢演算法分為先深搜尋和先廣搜尋,那麼nginx採用的是先深搜尋演算法,即將首先將請求都分給高權重的機器,直到該機器的權值降到了比其他機器低,才開始將請求分給下一個高權重的機器;第二,當所有後端機器都down掉時,nginx會立即將所有機器的標誌位清成初始狀態,以避免造成所有的機器都處在timeout的狀態,從而導致整個前端被夯住。
ip hash:
hash值既與ip有關又與後端機器的數量有關。經過測試,上述演算法可以連續產生1045個互異的value,這是該演算法的硬限制。對此nginx使用了保護機制,當經過20次hash仍然找不到可用的機器時,演算法退化成輪詢。因此,從本質上說,ip hash演算法是一種變相的輪詢演算法,如果兩個ip的初始hash值恰好相同,那麼來自這兩個ip的請求將永遠落在同一臺伺服器上,這為均衡性埋下了很深的隱患。

fair
其原理是根據後端伺服器的響應時間判斷負載情況,從中選出負載最輕的機器進行分流。


ab -n 100 -c 10 http://www.baidu.com

相關文章