LVS、nginx、Haproxy對比(詳細)



本文檔參考 http://www.ha97.com/5646.html

代理軟件

負載均衡產品介紹

市面上的負載均衡產品主要分為兩種:硬件產品和軟件產品

  • 硬件產品:F5和Array等商用負載均衡器,有專業維護團隊進行維護,花銷較大,對於規模較小的架構還沒有需要使用
  • 軟件產品:nginx、haproxy、lvs等開源等負載均衡軟件,成本較低
  • 架構:比較合理流行的方案為:Web前段采用nginx/haproxy+keepalived,nginx/haproxy負責后端web服務器的負載均衡,keepalived負責高可用;后端采用mysql一主多從和讀寫分離,采用lvs+keepalived的架構。實際操作部署根據實際情況

各產品優缺

nginx

優點

  1. 工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多於LVS了。location使用靈活,應用場合廣泛,工作在應用層

  2. Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一;相反LVS對網絡穩定性依賴比較大,這點本人深有體會;

  3. Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日志打印出來。LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。

  4. Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一台服務器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。

  5. Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。

  6. Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,可以考慮用其作為反向代理加速器。

  7. Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了,不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那么清晰易讀,社區資料也遠遠沒Nginx活躍。

  8. Nginx也可作為靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區非常活躍,第三方模塊也很多。

缺點

  1. Nginx僅能支持http、https和Email協議,這樣就在適用范圍上面小些,這個是它的缺點。
  2. 對后端服務器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測。不支持Session的直接保持,但能通過ip_hash來解決。

lvs

LVS:使用Linux內核集群實現一個高性能、高可用的負載均衡服務器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

優點

  1. 抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件里的性能最強的,對內存和cpu資源消耗比較低。

  2. 配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的幾率。

  3. 工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived。

  4. 無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。

  5. 應用范圍比較廣,因為LVS工作在4層,所以它幾乎可以對所有應用做負載均衡,包括http、數據庫、在線聊天室等等。

缺點

  1. 軟件本身不支持正則表達式處理,不能做動靜分離;而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。

2.如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較復雜了,特別后面有Windows Server的機器的話,如果實施及配置還有維護過程就比較復雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。

haproxy

優點

  1. HAProxy也是支持虛擬主機的。

  2. HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導;同時支持通過獲取指定的url來檢測后端服務器的狀態。

  3. HAProxy跟LVS類似,本身就只是一款負載均衡軟件;單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在並發處理上也是優於Nginx的。

  4. HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡。

  5. HAProxy負載均衡策略非常多,HAProxy的負載均衡算法現在具體有如下8種:

    1. roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;

    2. static-rr,表示根據權重,建議關注;

    3. leastconn,表示最少連接者先處理,建議關注;

    4. source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關注;

    5. ri,表示根據請求的URI;

    6. rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;

    7. hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;

    8. rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM