nginx,haproxy,lvs負載均衡的比較
Nginx的優點:
效能好,可以負載超過1萬的併發。
功能多,除了負載均衡,還能作Web伺服器,而且可以通過Geo模組來實現流量分配。
社群活躍,第三方補丁和模組很多
支援gzip proxy
缺點:
不支援session保持。
對後端realserver的健康檢查功能效果不好。而且只支援通過埠來檢測,不支援通過url來檢測。
nginx對big request header的支援不是很好,如果client_header_buffer_size設定的比較小,就會返回400bad request頁面。
Haproxy的優點:
它的優點正好可以補充nginx的缺點。支援session保持,同時支援通過獲取指定的url來檢測後端伺服器的狀態。
支援tcp模式的負載均衡。比如可以給mysql的從伺服器叢集和郵件伺服器做負載均衡。
LVS的優點:
效能好,接近硬體裝置的網路吞吐和連線負載能力。
LVS的DR模式,支援通過廣域網進行負載均衡。這個其他任何負載均衡軟體目前都不具備。
缺點:
比較重型。另外社群不如nginx活躍。
LVS的特點是:
1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生;
2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的機率;
3、工作穩定,自身有完整的雙機熱備方案;
4、無流量,保證了均衡器IO的效能不會收到大流量的影響;
5、應用範圍比較廣,可以對所有應用做負載均衡;
6、LVS需要向IDC多申請一個IP來做Visual IP,因此需要一定的網路知識,所以對操作人的要求比較高。
Nginx的特點是:
1、工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構;
2、Nginx對網路的依賴比較小;
3、Nginx安裝和配置比較簡單,測試起來比較方便;
4、也可以承擔高的負載壓力且穩定,一般能支撐超過1萬次的併發;
5、Nginx可以通過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支援url來檢測;
6、Nginx對請求的非同步處理可以幫助節點伺服器減輕負載;
7、Nginx能支援http和Email,這樣就在適用範圍上面小很多;
8、不支援Session的保持、對Big request header的支援不是很好,另外預設的只有Round-robin和IP-hash兩種負載均衡演算法。
HAProxy的特點是:
1、HAProxy是工作在網路7層之上。
2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作
3、支援url檢測後端的伺服器出問題的檢測會有很好的幫助。
4、更多的負載均衡策略比如:動態加權輪循(Dynamic Round Robin),加權源地址雜湊(Weighted Source Hash),加權URL雜湊和加權引數雜湊(Weighted Parameter Hash)已經實現
5、單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度。
6、HAProxy可以對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。