亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Nginx、LVS及HAProxy負(fù)載均衡軟件的優(yōu)缺點(diǎn)詳解

系統(tǒng) 1603 0

摘要: Nginx/LVS/HAProxy是目前使用最廣泛的三種負(fù)載均衡軟件,一般對(duì)負(fù)載均衡的使用是隨著網(wǎng)站規(guī)模的提升根據(jù)不同的階段來(lái)使用不同的技術(shù),具體的應(yīng)用需求還得具體分析,本文總結(jié)了三者之間的優(yōu)缺點(diǎn)。

【編者按】負(fù)載均衡 (Load Balancing) 建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,同時(shí)能夠提高網(wǎng)絡(luò)的靈活性和可用性。目前使用最為廣泛的負(fù)載均衡軟件是Nginx、LVS、HAProxy,本文作者結(jié)合自己的實(shí)踐經(jīng)驗(yàn)總結(jié)了三者各自的優(yōu)缺點(diǎn)。文章來(lái)自ha97網(wǎng)。

以下為原文:

Nginx/LVS/HAProxy是目前使用最廣泛的三種負(fù)載均衡軟件,本人都在多個(gè)項(xiàng)目中實(shí)施過,參考了一些資料,結(jié)合自己的一些使用經(jīng)驗(yàn),總結(jié)一下。

一般對(duì)負(fù)載均衡的使用是隨著網(wǎng)站規(guī)模的提升根據(jù)不同的階段來(lái)使用不同的技術(shù)。具體的應(yīng)用需求還得具體分析,如果是中小型的Web應(yīng)用,比如日PV小于1000萬(wàn),用Nginx就完全可以了;如果機(jī)器不少,可以用DNS輪詢,LVS所耗費(fèi)的機(jī)器還是比較多的;大型網(wǎng)站或重要的服務(wù),且服務(wù)器比較多時(shí),可以考慮用LVS。

一種是通過硬件來(lái)進(jìn)行,常見的硬件有比較昂貴的F5和Array等商用的負(fù)載均衡器,它的優(yōu)點(diǎn)就是有專業(yè)的維護(hù)團(tuán)隊(duì)來(lái)對(duì)這些服務(wù)進(jìn)行維護(hù)、缺點(diǎn)就是花銷太大,所以對(duì)于規(guī)模較小的網(wǎng)絡(luò)服務(wù)來(lái)說(shuō)暫時(shí)還沒有需要使用;另外一種就是類似于Nginx/LVS/HAProxy的基于 Linux的開源免費(fèi)的負(fù)載均衡軟件,這些都是通過軟件級(jí)別來(lái)實(shí)現(xiàn),所以費(fèi)用非常低廉。

目前關(guān)于網(wǎng)站架構(gòu)一般比較合理流行的架構(gòu)方案:Web前端采用Nginx/HAProxy+ Keepalived作負(fù)載均衡器;后端采用 MySQL數(shù)據(jù)庫(kù)一主多從和讀寫分離,采用LVS+Keepalived的架構(gòu)。當(dāng)然要根據(jù)項(xiàng)目具體需求制定方案。????

下面說(shuō)說(shuō)各自的特點(diǎn)和適用場(chǎng)合。

Nginx的優(yōu)點(diǎn)是:

1. 工作在網(wǎng)絡(luò)的7層之上,可以針對(duì)http應(yīng)用做一些分流的策略,比如針對(duì)域名、目錄結(jié)構(gòu),它的正則規(guī)則比HAProxy更為強(qiáng)大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于LVS了。?

2.?Nginx對(duì)網(wǎng)絡(luò)穩(wěn)定性的依賴非常小,理論上能ping通就就能進(jìn)行負(fù)載功能,這個(gè)也是它的優(yōu)勢(shì)之一;相反LVS對(duì)網(wǎng)絡(luò)穩(wěn)定性依賴比較大,這點(diǎn)本人深有體會(huì);?

3. Nginx安裝和配置比較簡(jiǎn)單,測(cè)試起來(lái)比較方便,它基本能把錯(cuò)誤用日志打印出來(lái)。LVS的配置、測(cè)試就要花比較長(zhǎng)的時(shí)間了,LVS對(duì)網(wǎng)絡(luò)依賴比較大。?

4. 可以承擔(dān)高負(fù)載壓力且穩(wěn)定,在硬件不差的情況下一般能支撐幾萬(wàn)次的并發(fā)量,負(fù)載度比LVS相對(duì)小些。?

5. Nginx可以通過端口檢測(cè)到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁(yè)返回的狀態(tài)碼、超時(shí)等等,并且會(huì)把返回錯(cuò)誤的請(qǐng)求重新提交到另一個(gè)節(jié)點(diǎn),不過其中缺點(diǎn)就是不支持url來(lái)檢測(cè)。比如用戶正在上傳一個(gè)文件,而處理該上傳的節(jié)點(diǎn)剛好在上傳過程中出現(xiàn)故障,Nginx會(huì)把上傳切到另一臺(tái)服務(wù)器重新處理,而LVS就直接斷掉了,如果是上傳一個(gè)很大的文件或者很重要的文件的話,用戶可能會(huì)因此而不滿。?

6. Nginx不僅僅是一款優(yōu)秀的負(fù)載均衡器/反向代理軟件,它同時(shí)也是功能強(qiáng)大的Web應(yīng)用服務(wù)器。LNMP也是近幾年非常流行的web架構(gòu),在高流量的環(huán)境中穩(wěn)定性也很好。?

7. Nginx現(xiàn)在作為Web反向加速緩存越來(lái)越成熟了,速度比傳統(tǒng)的Squid服務(wù)器更快,可以考慮用其作為反向代理加速器。?

8. Nginx可作為中層反向代理使用,這一層面Nginx基本上無(wú)對(duì)手,唯一可以對(duì)比Nginx的就只有 lighttpd了,不過 lighttpd目前還沒有做到Nginx完全的功能,配置也不那么清晰易讀,社區(qū)資料也遠(yuǎn)遠(yuǎn)沒Nginx活躍。?

9. Nginx也可作為靜態(tài)網(wǎng)頁(yè)和圖片服務(wù)器,這方面的性能也無(wú)對(duì)手。還有Nginx社區(qū)非?;钴S,第三方模塊也很多。

Nginx的缺點(diǎn)是:

1. Nginx僅能支持http、https和Email協(xié)議,這樣就在適用范圍上面小些,這個(gè)是它的缺點(diǎn)。?
2.? 對(duì)后端服務(wù)器的健康檢查,只支持通過端口來(lái)檢測(cè),不支持通過url來(lái)檢測(cè)。 不支持Session的直接保持,但能通過ip_hash來(lái)解決。

LVS:使用Linux內(nèi)核集群實(shí)現(xiàn)一個(gè)高性能、高可用的負(fù)載均衡服務(wù)器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

LVS的優(yōu)點(diǎn)是:

1. 抗負(fù)載能力強(qiáng)、是工作在網(wǎng)絡(luò)4層之上僅作分發(fā)之用, 沒有流量的產(chǎn)生 ,這個(gè)特點(diǎn)也決定了它在負(fù)載均衡軟件里的性能最強(qiáng)的,對(duì)內(nèi)存和cpu資源消耗比較低。?
2. 配置性比較低,這是一個(gè)缺點(diǎn)也是一個(gè)優(yōu)點(diǎn),因?yàn)闆]有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯(cuò)的幾率。?
3. 工作穩(wěn)定,因?yàn)槠浔旧砜关?fù)載能力很強(qiáng),自身有完整的雙機(jī)熱備方案,如LVS+Keepalived,不過我們?cè)陧?xiàng)目實(shí)施中用得最多的還是LVS/DR+Keepalived。?
4. 無(wú)流量,LVS只分發(fā)請(qǐng)求,而流量并不從它本身出去,這點(diǎn)保證了均衡器IO的性能不會(huì)受到大流量的影響。?
5. 應(yīng)用范圍比較廣,因?yàn)長(zhǎng)VS工作在4層,所以它幾乎可以對(duì)所有應(yīng)用做負(fù)載均衡,包括http、數(shù)據(jù)庫(kù)、在線聊天室等等。

LVS的缺點(diǎn)是: ???

1. 軟件本身不支持正則表達(dá)式處理,不能做動(dòng)靜分離;而現(xiàn)在許多網(wǎng)站在這方面都有較強(qiáng)的需求,這個(gè)是Nginx/HAProxy+Keepalived的優(yōu)勢(shì)所在。?
2. 如果是網(wǎng)站應(yīng)用比較龐大的話,LVS/DR+Keepalived實(shí)施起來(lái)就比較復(fù)雜了,特別后面有 Windows?Server的機(jī)器的話,如果實(shí)施及配置還有維護(hù)過程就比較復(fù)雜了,相對(duì)而言,Nginx/HAProxy+Keepalived就簡(jiǎn)單多了。

HAProxy的特點(diǎn)是: ???

1. HAProxy也是支持虛擬主機(jī)的。?
2. HAProxy的優(yōu)點(diǎn)能夠補(bǔ)充Nginx的一些缺點(diǎn),比如 支持Session的保持,Cookie的引導(dǎo);同時(shí)支持通過獲取指定的url來(lái)檢測(cè)后端服務(wù)器的狀態(tài)。 ?
3. HAProxy跟LVS類似,本身就只是一款負(fù)載均衡軟件;單純從效率上來(lái)講HAProxy會(huì)比Nginx有更出色的負(fù)載均衡速度,在并發(fā)處理上也是優(yōu)于Nginx的。?
4. HAProxy 支持TCP協(xié)議的負(fù)載均衡轉(zhuǎn)發(fā) ,可以對(duì)MySQL讀進(jìn)行負(fù)載均衡,對(duì)后端的MySQL節(jié)點(diǎn)進(jìn)行檢測(cè)和負(fù)載均衡,大家可以用LVS+Keepalived對(duì)MySQL主從做負(fù)載均衡。?
5. HAProxy負(fù)載均衡策略非常多,HAProxy的負(fù)載均衡算法現(xiàn)在具體有如下8種:?

① roundrobin,表示簡(jiǎn)單的輪詢,這個(gè)不多說(shuō),這個(gè)是負(fù)載均衡基本都具備的;?
② static-rr,表示根據(jù)權(quán)重,建議關(guān)注;?
③ leastconn,表示最少連接者先處理,建議關(guān)注;?
④ source,表示根據(jù)請(qǐng)求源IP,這個(gè)跟Nginx的IP_hash機(jī)制類似,我們用其作為解決session問題的一種方法,建議關(guān)注;?
⑤ ri,表示根據(jù)請(qǐng)求的URI;?
⑥ rl_param,表示根據(jù)請(qǐng)求的URl參數(shù)’balance url_param’ requires an URL parameter name;?
⑦ hdr(name),表示根據(jù)HTTP請(qǐng)求頭來(lái)鎖定每一次HTTP請(qǐng)求;?
⑧ rdp-cookie(name),表示根據(jù)據(jù)cookie(name)來(lái)鎖定并哈希每一次TCP請(qǐng)求。

?

Nginx和LVS對(duì)比的總結(jié): ???

1. Nginx工作在網(wǎng)絡(luò)的7層,所以它可以針對(duì)http應(yīng)用本身來(lái)做分流策略,比如針對(duì)域名、目錄結(jié)構(gòu)等,相比之下LVS并不具備這樣的功能,所以Nginx單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于LVS了;但Nginx有用的這些功能使其可調(diào)整度要高于LVS,所以經(jīng)常要去觸碰觸碰,觸碰多了,人為出問題的幾率也就會(huì)大。????

2. Nginx對(duì)網(wǎng)絡(luò)穩(wěn)定性的依賴較小,理論上只要ping得通,網(wǎng)頁(yè)訪問正常,Nginx就能連得通,這是Nginx的一大優(yōu)勢(shì)!Nginx同時(shí)還能區(qū)分內(nèi)外網(wǎng),如果是同時(shí)擁有內(nèi)外網(wǎng)的節(jié)點(diǎn),就相當(dāng)于單機(jī)擁有了備份線路;LVS就比較依賴于網(wǎng)絡(luò)環(huán)境,目前來(lái)看服務(wù)器在同一網(wǎng)段內(nèi)并且LVS使用direct方式分流,效果較能得到保證。另外注意,LVS需要向托管商至少申請(qǐng)多一個(gè)ip來(lái)做Visual IP,貌似是不能用本身的IP來(lái)做VIP的。要做好LVS管理員,確實(shí)得跟進(jìn)學(xué)習(xí)很多有關(guān)網(wǎng)絡(luò)通信方面的知識(shí),就不再是一個(gè)HTTP那么簡(jiǎn)單了。

3. Nginx安裝和配置比較簡(jiǎn)單,測(cè)試起來(lái)也很方便,因?yàn)樗灸馨彦e(cuò)誤用日志打印出來(lái)。LVS的安裝和配置、測(cè)試就要花比較長(zhǎng)的時(shí)間了;LVS對(duì)網(wǎng)絡(luò)依賴比較大,很多時(shí)候不能配置成功都是因?yàn)榫W(wǎng)絡(luò)問題而不是配置問題,出了問題要解決也相應(yīng)的會(huì)麻煩得多。?

4. Nginx也同樣能承受很高負(fù)載且穩(wěn)定,但負(fù)載度和穩(wěn)定度差LVS還有幾個(gè)等級(jí):Nginx處理所有流量所以受限于機(jī)器IO和配置;本身的bug也還是難以避免的。?

5. Nginx可以檢測(cè)到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁(yè)返回的狀態(tài)碼、超時(shí)等等,并且會(huì)把返回錯(cuò)誤的請(qǐng)求重新提交到另一個(gè)節(jié)點(diǎn)。目前LVS中 ldirectd也能支持針對(duì)服務(wù)器內(nèi)部的情況來(lái)監(jiān)控,但LVS的原理使其不能重發(fā)請(qǐng)求。比如用戶正在上傳一個(gè)文件,而處理該上傳的節(jié)點(diǎn)剛好在上傳過程中出現(xiàn)故障,Nginx會(huì)把上傳切到另一臺(tái)服務(wù)器重新處理,而LVS就直接斷掉了,如果是上傳一個(gè)很大的文件或者很重要的文件的話,用戶可能會(huì)因此而惱火。?

6. Nginx對(duì)請(qǐng)求的異步處理可以幫助節(jié)點(diǎn)服務(wù)器減輕負(fù)載,假如使用 apache直接對(duì)外服務(wù),那么出現(xiàn)很多的窄帶鏈接時(shí)apache服務(wù)器將會(huì)占用大 量?jī)?nèi)存而不能釋放,使用多一個(gè)Nginx做apache代理的話,這些窄帶鏈接會(huì)被Nginx擋住,apache上就不會(huì)堆積過多的請(qǐng)求,這樣就減少了相當(dāng)多的資源占用。這點(diǎn)使用squid也有相同的作用,即使squid本身配置為不緩存,對(duì)apache還是有很大幫助的。?

7. Nginx能支持http、https和email(email的功能比較少用),LVS所支持的應(yīng)用在這點(diǎn)上會(huì)比Nginx更多。在使用上,一般最前端所采取的策略應(yīng)是LVS,也就是DNS的指向應(yīng)為L(zhǎng)VS均衡器,LVS的優(yōu)點(diǎn)令它非常適合做這個(gè)任務(wù)。重要的ip地址,最好交由LVS托管,比如數(shù)據(jù)庫(kù)的 ip、webservice服務(wù)器的ip等等,這些ip地址隨著時(shí)間推移,使用面會(huì)越來(lái)越大,如果更換ip則故障會(huì)接踵而至。所以將這些重要ip交給 LVS托管是最為穩(wěn)妥的,這樣做的唯一缺點(diǎn)是需要的VIP數(shù)量會(huì)比較多。Nginx可作為L(zhǎng)VS節(jié)點(diǎn)機(jī)器使用,一是可以利用Nginx的功能,二是可以利用Nginx的性能。當(dāng)然這一層面也可以直接使用squid,squid的功能方面就比Nginx弱不少了,性能上也有所遜色于Nginx。Nginx也可作為中層代理使用,這一層面Nginx基本上無(wú)對(duì)手,唯一可以撼動(dòng)Nginx的就只有l(wèi)ighttpd了,不過lighttpd目前還沒有能做到 Nginx完全的功能,配置也不那么清晰易讀。另外,中層代理的IP也是重要的,所以中層代理也擁有一個(gè)VIP和LVS是最完美的方案了。具體的應(yīng)用還得具體分析,如果是比較小的網(wǎng)站(日PV小于1000萬(wàn)),用Nginx就完全可以了,如果機(jī)器也不少,可以用DNS輪詢,LVS所耗費(fèi)的機(jī)器還是比較多的;大型網(wǎng)站或者重要的服務(wù),機(jī)器不發(fā)愁的時(shí)候,要多多考慮利用LVS。

現(xiàn)在對(duì)網(wǎng)絡(luò)負(fù)載均衡的使用是隨著網(wǎng)站規(guī)模的提升根據(jù)不同的階段來(lái)使用不同的技術(shù):

第一階段:利用Nginx或HAProxy進(jìn)行單點(diǎn)的負(fù)載均衡,這一階段服務(wù)器規(guī)模剛脫離開單服務(wù)器、單數(shù)據(jù)庫(kù)的模式,需要一定的負(fù)載均衡,但是仍然規(guī)模較小沒有專業(yè)的維護(hù)團(tuán)隊(duì)來(lái)進(jìn)行維護(hù),也沒有需要進(jìn)行大規(guī)模的網(wǎng)站部署。這樣利用Nginx或HAproxy就是第一選擇,此時(shí)這些東西上手快, 配置容易,在七層之上利用HTTP協(xié)議就可以。這時(shí)是第一選擇。

第二階段:隨著網(wǎng)絡(luò)服務(wù)進(jìn)一步擴(kuò)大,這時(shí)單點(diǎn)的Nginx已經(jīng)不能滿足,這時(shí)使用LVS或者商用Array就是首要選擇,Nginx此時(shí)就作為L(zhǎng)VS或者Array的節(jié)點(diǎn)來(lái)使用,具體LVS或Array的是選擇是根據(jù)公司規(guī)模和預(yù)算來(lái)選擇,Array的應(yīng)用交付功能非常強(qiáng)大,本人在某項(xiàng)目中使用過,性價(jià)比也遠(yuǎn)高于F5,商用首選,但是一般來(lái)說(shuō)這階段相關(guān)人才跟不上業(yè)務(wù)的提升,所以購(gòu)買商業(yè)負(fù)載均衡已經(jīng)成為了必經(jīng)之路。

第三階段:這時(shí)網(wǎng)絡(luò)服務(wù)已經(jīng)成為主流產(chǎn)品,此時(shí)隨著公司知名度也進(jìn)一步擴(kuò)展,相關(guān)人才的能力以及數(shù)量也隨之提升,這時(shí)無(wú)論從開發(fā)適合自身產(chǎn)品的定制,以及降低成本來(lái)講開源的LVS,已經(jīng)成為首選,這時(shí)LVS會(huì)成為主流。????

最終形成比較理想的基本架構(gòu)為:Array/LVS — Nginx/Haproxy — Squid/Varnish — AppServer。

Nginx、LVS及HAProxy負(fù)載均衡軟件的優(yōu)缺點(diǎn)詳解


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久亚洲国产精品一区二区 | 综合国产| 精品在线观看国产 | 欧美高清性粉嫩交 | 久久性生活片 | 九九视频在线免费观看 | 亚洲视频中文 | 淫视频网站 | 亚洲精品久久久久久久网站 | 欧美国产中文字幕 | 亚洲欧美中文字幕在线网站 | 四虎影视免费永久在线观看 | 国产一区二区三区在线免费 | 久久香蕉国产线看观看精品yw | 国产成人久久精品激情91 | 成人精品一区二区不卡视频 | 久久私人影院 | 最新国产一区二区精品久久 | 亚洲国产人成中文幕一级二级 | 鲁啊鲁啊鲁在线视频播放 | 精品久久久久久久久久久久久久久 | 免费看又爽又黄禁片视频1000 | 四虎影视地址 | 午夜人成 | 久久se精品动漫一区二区三区 | 97婷婷狠狠成人免费视频 | 色狠狠色综合久久8狠狠色 色狠狠婷婷97 | 国产―笫一页―浮力影院xyz | 国产精品四虎视频一区 | 婷婷中文网| 国产aaa毛片 | 成人特黄午夜性a一级毛片 成人特级毛片69免费观看 | 884hutv四虎永久黄网 | 日韩中文字幕精品一区在线 | 色综合精品久久久久久久 | 欧美日韩亚洲国产精品 | 九热这里只有精品 | 日韩中文字幕在线视频 | 5060网一级毛片免费观看 | 久九色| 性生生活三级视频观看 |