LVS 4層(tcp)負載均衡,轉發,DR模式為主要場景
優點:資料包傳回可以不經過LB,是以高效,幾十萬并發
缺點:需要配置RS,是以部署複雜,功能單一。
Nginx 7層,負載均衡(反向代理),1.9以後支援4層
缺點:效率不太高,1-5萬并發,資料包來去都要經過負載均衡器
優點:簡單,友善,不需要配置RS,支援基于URL,擴充名等的排程功能,可以做web和cache
haproxy 同時支援4層和7層
缺點:效率不太高,1-5萬并發,資料包來去都要經過負載均衡器。不為人熟知
優點:支援4層和7層。
二、nginx和lvs作對比的結果
1、nginx工作在網絡的7層,是以它可以針對http應用本身來做分流政策,比如針對域名、目錄結
構等,相比之下lvs并不具備這樣的功能
2、nginx對網絡的依賴較小,理論上隻要ping得通,網頁通路正常,nginx就能連得通,nginx同
時還能區分内外網,如果是同時擁有内外網的 節點,就相當于單機擁有了備份線路;lvs就比較依
賴于網絡環境,目前來看伺服器在同一網段内并且lvs使用direct方式分流,效果較能得到保證。
另 外注意,lvs需要向托管商至少申請多一個ip來做Visual IP,貌似是不能用本身的IP來做VIP
的。
3、nginx安裝和配置比較簡單,測試起來也很友善,因為它基本能把錯誤用日志列印出來。lvs的
安裝和配置、測試就要花比較長的時間了,因為同上所述,lvs對網絡依賴比較大,很多時候不能
配置成功都是因為網絡問題而不是配置問題,出了問題要解決也相應的會麻煩得多。
4、nginx也同樣能承受很高負載且穩定,但負載度和穩定度差lvs還有幾個等級:nginx處理所有
流量是以受限于機器IO和配置;本身的bug也還是難以避免的;nginx沒有現成的雙機熱備方案,
是以跑在單機上還是風險較大,單機上的事情全都很難說。
5、nginx可以檢測到伺服器内部的故障,比如根據伺服器處理網頁傳回的狀态碼、逾時等等,并且
會把傳回錯誤的請求重新送出到另一個節點。目前lvs中 ldirectd也能支援針對伺服器内部的情
況來監控,但lvs的原理使其不能重發請求。重發請求這點,譬如使用者正在上傳一個檔案,而處理
該上傳的節點剛 好在上傳過程中出現故障,nginx會把上傳切到另一台伺服器重新處理,而lvs就
直接斷掉了,如果是上傳一個很大的檔案或者很重要的檔案的話,使用者可能 會是以而惱火。
6、nginx對請求的異步處理可以幫助節點伺服器減輕負載,假如使用apache直接對外服務,那麼
出現很多的窄帶連結時apache伺服器将會占用大 量記憶體而不能釋放,使用多一個nginx做apache
代理的話,這些窄帶連結會被nginx擋住,apache上就不會堆積過多的請求,這樣就減少了相 當
多的記憶體占用。這點使用squid也有相同的作用,即使squid本身配置為不緩存,對apache還是有
很大幫助的。lvs沒有這些功能,也就無法能 比較。
7、nginx能支援http和email(email的功能估計比較少人用),lvs所支援的應用在這點上會比
nginx更多。
本文轉自寫個部落格騙錢部落格51CTO部落格,原文連結http://blog.51cto.com/dadonggg/1955684如需轉載請自行聯系原作者
菜鳥東哥