lvs/nginx/haproxy優缺點

Nginx的優勢是:web

 一、工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構正則表達式

它的正則規則比HAProxy更爲強大和靈活,這也是它目前普遍流行的主要緣由之一算法

Nginx單憑這點可利用的場合就遠多於LVS了。數據庫

 

二、Nginx對網絡穩定性的依賴很是小,理論上能ping通就就能進行負載功能,這個也是它的優點之一後端

相反LVS對網絡穩定性依賴比較大,這點本人深有體會;緩存

 

三、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來服務器

LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。cookie

 

四、能夠承擔高負載壓力且穩定,在硬件不差的狀況下通常能支撐幾萬次的併發量,負載度比LVS相對小些。網絡

 

五、Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測。好比用戶正在上傳一個文件,而處理該上傳的節點恰好在上傳過程當中出現故障,Nginx會把上傳切到另外一臺服務器從新處理,而LVS就直接斷掉了session

若是是上傳一個很大的文件或者很重要的文件的話,用戶可能會所以而不滿。

 

六、Nginx不只僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器

LNMP也是近幾年很是流行的web架構,在高流量的環境中穩定性也很好。

 

七、Nginx如今做爲Web反向加速緩存愈來愈成熟了,速度比傳統的Squid服務器更快,可考慮用其做爲反向代理加速器

 

八、Nginx可做爲中層反向代理使用,這一層面Nginx基本上無對手,惟一能夠對比Nginx的就只有lighttpd了

不過lighttpd目前尚未作到Nginx徹底的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍

 

九、Nginx也可做爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區很是活躍,第三方模塊也不少

 

Nginx的缺點是:

一、Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點

二、對後端服務器的健康檢查,只支持經過端口來檢測,不支持經過url來檢測

      不支持Session的直接保持,但能經過ip_hash來解決

 

LVS:使用Linux內核集羣實現一個高性能、高可用的負載均衡服務器

           它具備很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

  

LVS的優勢是:

一、抗負載能力強、是工做在網絡4層之上僅做分發之用,沒有流量的產生

      這個特色也決定了它在負載均衡軟件裏的性能最強的,對內存和cpu資源消耗比較低

 

二、配置性比較低,這是一個缺點也是一個優勢,由於沒有可太多配置的東西

      因此並不須要太多接觸,大大減小了人爲出錯的概率

 

三、工做穩定,由於其自己抗負載能力很強,自身有完整的雙機熱備方案

      如LVS+Keepalived,不過咱們在項目實施中用得最多的仍是LVS/DR+Keepalived

 

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

五、應用範圍較廣,由於LVS工做在4層,因此它幾乎可對全部應用作負載均衡,包括http、數據庫、在線聊天室等

  

LVS的缺點是:

一、軟件自己不支持正則表達式處理,不能作動靜分離

      而如今許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優點所在

二、若是是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了

      特別後面有Windows Server的機器的話,若是實施及配置還有維護過程就比較複雜了

      相對而言,Nginx/HAProxy+Keepalived就簡單多了。

 

HAProxy的特色是:

一、HAProxy也是支持虛擬主機的。

二、HAProxy的優勢可以補充Nginx的一些缺點,好比支持Session的保持,Cookie的引導

      同時支持經過獲取指定的url來檢測後端服務器的狀態

 

三、HAProxy跟LVS相似,自己就只是一款負載均衡軟件

      單純從效率上來說HAProxy會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的

 

四、HAProxy支持TCP協議的負載均衡轉發,能夠對MySQL讀進行負載均衡

      對後端的MySQL節點進行檢測和負載均衡,你們能夠用LVS+Keepalived對MySQL主從作負載均衡

 

五、HAProxy負載均衡策略很是多,HAProxy的負載均衡算法如今具體有以下8種:

①roundrobin,表示簡單的輪詢,這個很少說,這個是負載均衡基本都具有的;

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

③leastconn,表示最少鏈接者先處理,建議關注;

④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制相似

     咱們用其做爲解決session問題的一種方法,建議關注;

⑤ri,表示根據請求的URI;

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

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

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

相關文章
相關標籤/搜索