LVS的特點是:
- 抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件里的性能最強的;
- 配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯的幾率;
- 工作穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived;
- 無流量,保證了均衡器IO的性能不會收到大流量的影響;
- 應用范圍比較廣,可以對所有應用做負載均衡;
- 軟件本身不支持正則處理,不能做動靜分離,這個就比較遺憾了;其實現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。
- 如果是網站應用比較龐大的話,實施LVS/DR+Keepalived起來就比較復雜了,特別后面有Windows Server應用的機器的話,如果實施及配置還有維護過程就比較復雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
Nginx的特點是:
- 工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是許多朋友喜歡它的原因之一;
- Nginx對網絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢所在;
- Nginx安裝和配置比較簡單,測試起來比較方便;
- 也可以承擔高的負載壓力且穩定,一般能支撐超過幾萬次的并發量;
- Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,并且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測;
- N1.ginx僅能支持http和Email,這樣就在適用范圍上面小很多,這個它的弱勢;
- N1.ginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP現在也是非常流行的web架構,大有和以前最流行的LAMP架構分庭抗爭之勢,在高流量的環境中也有很好的效果。
- Nginx現在作為Web反向加速緩存越來越成熟了,很多朋友都已在生產環境下投入生產了,而且反映效果不錯,速度比傳統的Squid服務器更快,有興趣的朋友可以考慮用其作為反向代理加速器。
HAProxy的特點是:
- HAProxy是支持虛擬主機的,以前有朋友說這個不支持虛擬主機,我這里特此更正一下。
- 能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作
- 支持url檢測后端的服務器出問題的檢測會有很好的幫助。
- 它跟LVS一樣,本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的。
- HAProxy可以對Mysql讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡,不過在后端的MySQL slaves數量超過10臺時性能不如LVS,所以我向大家推薦LVS+Keepalived。
HAProxy的算法現在也越來越多了,具體有如下8種:
- roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
- static-rr,表示根據權重,建議關注;
- leastconn,表示最少連接者先處理,建議關注;
- source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關注;
- ri,表示根據請求的URI;
- rlparam,表示根據請求的URl參數'balance urlparam' requires an URL parameter name;
- hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
- rdp-cookie(name),表示根據據cookie(name)來鎖定并哈希每一次TCP請求。