1. 程式人生 > >LVS Nginx和HAproxy的區別,怎麽選擇最好

LVS Nginx和HAproxy的區別,怎麽選擇最好

產生 輕量級 電子 並且 服務器 array 網絡服務 所有應用 負載

LVS Nginx和HAproxy有什麽區別呢?

LVS:Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。

Nginx:Nginx是一款輕量級的web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like協議下發行。

HAproxy:HAproxy是一個使用C語言編寫的自由及開放源代碼軟件[1],其提供高可用性,負載均衡,以及基於TCP和HTTP的應用程序代理。

通過概念方面,我們可以看得出來,都可以提供高可用和負載均衡等的服務,所以從概念方面,沒有什麽區別的呢?

LVS的優點是:

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

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

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

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

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

Nginx的優點是:

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

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

3,可以承擔高負載壓力且穩定,在硬件不差的情況下一般能支撐幾萬次的並發量,負載度比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社區非常活躍,第三方模塊也很多。

HAproxy的特點是:

1,HAproxy也是支持虛擬主機的。

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

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

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

現在對網絡負載均衡的使用是隨著網站規模的提升根據不同的階段來使用不同的技術:

第一階段:利用Nginx或HAproxy進行單點的負載均衡,這一階段服務器剛脫離開單服務器,單數據庫的模式,需要一定的負載均衡,但是仍然規模較小沒有專業的維護團隊來進行維護,也沒有需要進行大規模的網站部署,這樣利用Nginx或HAproxy就是第一選擇,此時這些東西上手快,配置容易,在七層之上利用HTTP協議就可以。這時是第一選擇。

第二階段:隨著網絡服務進一步擴大,這時單點的Nginx已經不能滿足,這時使用LVS或者商用Array就是首要選擇,Nginx此時就作為LVS或者Array的節點來使用,具體LVS或Array的是選擇是根據公司規模和預算來選擇,Array的應用交付功能非常強大,本人在某項目中使用過,性價比也遠高於FS,商用首選!但是一般來說這1階段相關人才跟不上業務的提升,所以購買商業負載均衡已經成為了必經之路。

第三階段:這時網絡服務已經成為主流產品,此時隨著公司知名度也進一步擴展,相關人才的能力以及數量也隨之提升,這時無論從開發適合自身產品的定制,以及降低成本來講開源的LVS,已經成為首選,這時LVS會成為主流。

最終形成比較理想的基本架構為:Array/LVS——Nginx/Haproxy——Squid/varnish——AppServer。

LVS Nginx和HAproxy的區別,怎麽選擇最好