天天看點

Nginx和lvs負載均衡的差別

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如需轉載請自行聯系原作者

菜鳥東哥

繼續閱讀