lvs战得、haproxy、nginx 負載均衡的比較分析

本文轉自:http://blog.csdn.net/gzh0222/article/details/8540604

對軟件實現(xiàn)負載均衡的幾個軟件庸推,小D詳細看了一下常侦,從性能和穩(wěn)定上還是LVS最牛,基本達到了F5硬件設備的60%性能贬媒,其他幾個10%都有點困難聋亡。
不過就因為LVS忒牛了,配置也最麻煩了际乘,而且健康檢測需要另外配置Ldirector坡倔,其他HAPROXY和NGINX自己就用,而且配置超級簡單脖含。
所以小D建議罪塔,如果網(wǎng)站訪問量不是門戶級別的用HAPROXY或者NGINX就OK了,到了門戶級別在用LVS+Idirector吧 哈哈
lvs和nginx都可以用作多機負載的方案养葵,它們各有優(yōu)缺垢袱,在生產環(huán)境中需要好好分析實際情況并加以利用。首先提醒港柜,做技術切不可人云亦云请契,我云即你云咳榜;同時也不可太趨向保守,過于相信舊有方式而等別人來幫你做墊被測試爽锥。把所有即時聽說到的好東西加以鉆研涌韩,從而提高自己對技術的認知和水平,乃是一個好習慣氯夷。下面來分析一下兩者:

一臣樱、lvs的優(yōu)勢:

1、抗負載能力強腮考,因為lvs工作方式的邏輯是非常之簡單雇毫,而且工作在網(wǎng)絡4層僅做請求分發(fā)之用,沒有流量踩蔚,所以在效率上基本不需要太過考慮棚放。在我手里的 lvs,僅僅出過一次問題:在并發(fā)最高的一小段時間內均衡器出現(xiàn)丟包現(xiàn)象馅闽,據(jù)分析為網(wǎng)絡問題飘蚯,即網(wǎng)卡或linux2.4內核的承載能力已到上限,內存和 cpu方面基本無消耗福也。
2局骤、配置性低,這通常是一大劣勢暴凑,但同時也是一大優(yōu)勢峦甩,因為沒有太多可配置的選項,所以除了增減服務器现喳,并不需要經(jīng)常去觸碰它穴店,大大減少了人為出錯的幾率。
3拿穴、工作穩(wěn)定,因為其本身抗負載能力很強忧风,所以穩(wěn)定性高也是順理成章默色,另外各種lvs都有完整的雙機熱備方案,所以一點不用擔心均衡器本身會出什么問題狮腿,節(jié)點出現(xiàn)故障的話腿宰,lvs會自動判別,所以系統(tǒng)整體是非常穩(wěn)定的缘厢。
4吃度、無流量,上面已經(jīng)有所提及了贴硫。lvs僅僅分發(fā)請求椿每,而流量并不從它本身出去伊者,所以可以利用它這點來做一些線路分流之用。沒有流量同時也保住了均衡器的IO性能不會受到大流量的影響间护。
5亦渗、基本上能支持所有應用,因為lvs工作在4層汁尺,所以它可以對幾乎所有應用做負載均衡法精,包括http、數(shù)據(jù)庫痴突、聊天室等等具练。另:lvs也不是完全能判別節(jié)點故障的,譬如在wlc分配方式下啊楚,集群里有一個節(jié)點沒有配置VIP代兵,會使整個集群不能使用,這時使用wrr分配方式則會丟掉一臺機如迟。目前這個問題還在進一步測試中收毫。所以,用lvs也得多多當心為妙殷勘。
簡單給出網(wǎng)絡層

7.應用層                    
6.表示層                          
5.會話層                          
4.傳輸層                             
3.網(wǎng)絡層                       
2.數(shù)據(jù)鏈路層
1.物理層(硬件)                             

二此再、nginx和lvs作對比的結果

1、nginx工作在網(wǎng)絡的7層玲销,所以它可以針對http應用本身來做分流策略输拇,比如針對域名、目錄結構等贤斜,相比之下lvs并不具備這樣的功能策吠,所以 nginx單憑這點可利用的場合就遠多于lvs了;但nginx有用的這些功能使其可調整度要高于lvs瘩绒,所以經(jīng)常要去觸碰觸碰猴抹,由lvs的第2條優(yōu)點 看,觸碰多了锁荔,人為出問題的幾率也就會大蟀给。
2、nginx對網(wǎng)絡的依賴較小阳堕,理論上只要ping得通跋理,網(wǎng)頁訪問正常,nginx就能連得通恬总,nginx同時還能區(qū)分內外網(wǎng)前普,如果是同時擁有內外網(wǎng)的 節(jié)點,就相當于單機擁有了備份線路壹堰;lvs就比較依賴于網(wǎng)絡環(huán)境拭卿,目前來看服務器在同一網(wǎng)段內并且lvs使用direct方式分流骡湖,效果較能得到保證。另 外注意记劈,lvs需要向托管商至少申請多一個ip來做Visual IP勺鸦,貌似是不能用本身的IP來做VIP的。要做好LVS管理員目木,確實得跟進學習很多有關網(wǎng)絡通信方面的知識换途,就不再是一個HTTP那么簡單了。
3刽射、nginx安裝和配置比較簡單军拟,測試起來也很方便,因為它基本能把錯誤用日志打印出來誓禁。lvs的安裝和配置懈息、測試就要花比較長的時間了,因為同上所述摹恰,lvs對網(wǎng)絡依賴比較大辫继,很多時候不能配置成功都是因為網(wǎng)絡問題而不是配置問題,出了問題要解決也相應的會麻煩得多俗慈。
4姑宽、nginx也同樣能承受很高負載且穩(wěn)定,但負載度和穩(wěn)定度差lvs還有幾個等級:nginx處理所有流量所以受限于機器IO和配置闺阱;本身的bug也還是難以避免的炮车;nginx沒有現(xiàn)成的雙機熱備方案,所以跑在單機上還是風險較大酣溃,單機上的事情全都很難說瘦穆。
5、nginx可以檢測到服務器內部的故障赊豌,比如根據(jù)服務器處理網(wǎng)頁返回的狀態(tài)碼扛或、超時等等,并且會把返回錯誤的請求重新提交到另一個節(jié)點碘饼。目前l(fā)vs中 ldirectd也能支持針對服務器內部的情況來監(jiān)控熙兔,但lvs的原理使其不能重發(fā)請求。重發(fā)請求這點派昧,譬如用戶正在上傳一個文件,而處理該上傳的節(jié)點剛 好在上傳過程中出現(xiàn)故障拢切,nginx會把上傳切到另一臺服務器重新處理蒂萎,而lvs就直接斷掉了,如果是上傳一個很大的文件或者很重要的文件的話淮椰,用戶可能 會因此而惱火五慈。
6纳寂、nginx對請求的異步處理可以幫助節(jié)點服務器減輕負載,假如使用apache直接對外服務泻拦,那么出現(xiàn)很多的窄帶鏈接時apache服務器將會占用大 量內存而不能釋放毙芜,使用多一個nginx做apache代理的話,這些窄帶鏈接會被nginx擋住争拐,apache上就不會堆積過多的請求腋粥,這樣就減少了相 當多的內存占用。這點使用squid也有相同的作用架曹,即使squid本身配置為不緩存隘冲,對apache還是有很大幫助的。lvs沒有這些功能绑雄,也就無法能 比較展辞。
7、nginx能支持http和email(email的功能估計比較少人用)万牺,lvs所支持的應用在這點上會比nginx更多罗珍。在使用上,一般最前端所采取的策略應是lvs脚粟,也就是DNS的指向應為lvs均衡器覆旱,lvs的優(yōu)點令它非常適合做這個任務。重要的ip地址珊楼,最好交由lvs托管通殃,比如數(shù)據(jù)庫的ip、webservice服務器的ip等等厕宗,這些ip地址隨著時間推移画舌,使用面會越來越大,如果更換ip則故障會接踵而至已慢。所以將這些重要ip交給lvs托管是最為穩(wěn)妥的曲聂,這樣做的唯一缺點是需要的VIP數(shù)量會比較多。nginx可作為lvs節(jié)點機器使用佑惠,一是可以利用nginx的功能朋腋,二是可以利用nginx的性能。當然這一層面也可以直接使用squid膜楷,squid的功能方面就比nginx弱不少了旭咽,性能上也有所遜色于nginx。nginx也可作為中層代理使用赌厅,這一層面nginx基本上無對手穷绵,唯一可以撼動nginx的就只有l(wèi)ighttpd了,不過lighttpd目前還沒有 能做到nginx完全的功能特愿,配置也不那么清晰易讀仲墨。另外勾缭,中層代理的IP也是重要的,所以中層代理也擁有一個VIP和lvs是最完美的方案了目养。nginx也可作為網(wǎng)頁靜態(tài)服務器俩由,不過超出了本文討論的范疇,簡單提一下癌蚁。具體的應用還得具體分析幻梯,如果是比較小的網(wǎng)站(日PV<1000萬),用nginx就完全可以了匈勋,如果機器也不少礼旅,可以用DNS輪詢,lvs所耗費的機器還是比較多的洽洁;大型網(wǎng)站或者重要的服務痘系,機器不發(fā)愁的時候,要多多考慮利用lvs饿自。


Nginx的優(yōu)點:性能好汰翠,可以負載超過1萬的并發(fā)。功能多昭雌,除了負載均衡复唤,還能作Web服務器,而且可以通過Geo模塊來實現(xiàn)流量分配烛卧。社區(qū)活躍佛纫,第三方補丁和模塊很多支持gzip proxy缺點:不支持session保持。對后端realserver的健康檢查功能效果不好总放。而且只支持通過端口來檢測呈宇,不支持通過url來檢測。nginx對big request header的支持不是很好局雄,如果client_header_buffer_size設置的比較小甥啄,就會返回400bad request頁面。Haproxy的優(yōu)點:它的優(yōu)點正好可以補充nginx的缺點炬搭。支持session保持蜈漓,同時支持通過獲取指定的url來檢測后端服務器的狀態(tài)。支持tcp模式的負載均衡宫盔。比如可以給mysql的從服務器集群和郵件服務器做負載均衡融虽。缺點:不支持虛擬主機(這個很傻啊)目前沒有nagios和cacti的性能監(jiān)控模板LVS的優(yōu)點:性能好,接近硬件設備的網(wǎng)絡吞吐和連接負載能力灼芭。LVS的DR模式有额,支持通過廣域網(wǎng)進行負載均衡。這個其他任何負載均衡軟件目前都不具備。缺點:比較重型谆吴。另外社區(qū)不如nginx活躍。


現(xiàn)在網(wǎng)絡中常見的的負載均衡主要分為兩種:一種是通過硬件來進行進行苛预,常見的硬件有比較昂貴的NetScaler句狼、F5、Radware和Array等商用的負載均衡器热某,也有類似于LVS腻菇、Nginx、HAproxy的基于Linux的開源的負載均衡策略,
商用負載均衡里面NetScaler從效果上比F5的效率上更高昔馋。對于負載均衡器來說筹吐,不過商用負載均衡由于可以建立在四~七層協(xié)議之上,因此適用 面更廣所以有其不可替代性秘遏,他的優(yōu)點就是有專業(yè)的維護團隊來對這些服務進行維護丘薛、缺點就是花銷太大,所以對于規(guī)模較小的網(wǎng)絡服務來說暫時還沒有需要使用邦危。
另一種負載均衡的方式是通過軟件:比較常見的有LVS洋侨、Nginx、HAproxy等倦蚪,其中LVS是建立在四層協(xié)議上面的希坚,而另外Nginx和HAproxy是建立在七層協(xié)議之上的,下面分別介紹關于
LVS:使用集群技術和Linux操作系統(tǒng)實現(xiàn)一個高性能陵且、高可用的服務器裁僧,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)慕购。

LVS的特點是:

1聊疲、抗負載能力強、是工作在網(wǎng)絡4層之上僅作分發(fā)之用脓钾,沒有流量的產生售睹;
2、配置性比較低可训,這是一個缺點也是一個優(yōu)點昌妹,因為沒有可太多配置的東西,所以并不需要太多接觸握截,大大減少了人為出錯的幾率飞崖;
3、工作穩(wěn)定谨胞,自身有完整的雙機熱備方案固歪;
4、無流量,保證了均衡器IO的性能不會收到大流量的影響牢裳;
5逢防、應用范圍比較廣,可以對所有應用做負載均衡蒲讯;
6忘朝、LVS需要向IDC多申請一個IP來做Visual IP,因此需要一定的網(wǎng)絡知識判帮,所以對操作人的要求比較高局嘁。

Nginx的特點是:

1、工作在網(wǎng)絡的7層之上晦墙,可以針對http應用做一些分流的策略悦昵,比如針對域名、目錄結構晌畅;
2但指、Nginx對網(wǎng)絡的依賴比較小抗楔;
3枚赡、Nginx安裝和配置比較簡單,測試起來比較方便谓谦;
4贫橙、也可以承擔高的負載壓力且穩(wěn)定,一般能支撐超過1萬次的并發(fā)反粥;
5卢肃、Nginx可以通過端口檢測到服務器內部的故障,比如根據(jù)服務器處理網(wǎng)頁返回的狀態(tài)碼才顿、超時等等莫湘,并且會把返回錯誤的請求重新提交到另一個節(jié)點,不過其中缺點就是不支持url來檢測郑气;
6幅垮、Nginx對請求的異步處理可以幫助節(jié)點服務器減輕負載;
7尾组、Nginx能支持http和Email忙芒,這樣就在適用范圍上面小很多;
8讳侨、不支持Session的保持呵萨、對Big request header的支持不是很好,另外默認的只有Round-robin和IP-hash兩種負載均衡算法跨跨。

HAProxy的特點是:

1潮峦、HAProxy是工作在網(wǎng)絡7層之上。
2、能夠補充Nginx的一些缺點比如Session的保持忱嘹,Cookie的引導等工作
3嘱腥、支持url檢測后端的服務器出問題的檢測會有很好的幫助。
4拘悦、更多的負載均衡策略比如:動態(tài)加權輪循(Dynamic Round Robin)爹橱,加權源地址哈希(Weighted Source Hash),加權URL哈希和加權參數(shù)哈希(Weighted Parameter Hash)已經(jīng)實現(xiàn)
5窄做、單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度。
6慰技、HAProxy可以對Mysql進行負載均衡椭盏,對后端的DB節(jié)點進行檢測和負載均衡。


現(xiàn)在網(wǎng)站發(fā)展的趨勢對網(wǎng)絡負載均衡的使用是隨著網(wǎng)站規(guī)模的提升根據(jù)不同的階段來使用不同的技術:
第一階段:利用Nginx或者HAProxy進行單點的負載均衡吻商,這一階段服務器規(guī)模剛脫離開單服務器掏颊、單數(shù)據(jù)庫的模式,需要一定的負載均衡艾帐,但是 仍然規(guī)模較小沒有專業(yè)的維護團隊來進行維護乌叶,也沒有需要進行大規(guī)模的網(wǎng)站部署。這樣利用Nginx或者HAproxy就是第一選擇柒爸,此時這些東西上手快准浴, 配置容易,在七層之上利用HTTP協(xié)議就可以捎稚。這時是第一選擇

第二階段:隨著網(wǎng)絡服務進一步擴大乐横,這時單點的Nginx已經(jīng)不能滿足,這時使用LVS或者商用F5就是首要選擇今野,Nginx此時就作為LVS或者 F5的節(jié)點來使用葡公,具體LVS或者F5的是選擇是根據(jù)公司規(guī)模,人才以及資金能力來選擇的条霜,這里也不做詳談催什,但是一般來說這階段相關人才跟不上業(yè)務的提 升,所以購買商業(yè)負載均衡已經(jīng)成為了必經(jīng)之路宰睡。

第三階段:這時網(wǎng)絡服務已經(jīng)成為主流產品蒲凶,此時隨著公司知名度也進一步擴展,相關人才的能力以及數(shù)量也隨之提升拆内,這時無論從開發(fā)適合自身產品的定制豹爹,以及降低成本來講開源的LVS,已經(jīng)成為首選矛纹,這時LVS會成為主流臂聋。
最終形成比較理想的狀態(tài)為:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市孩等,隨后出現(xiàn)的幾起案子艾君,更是在濱河造成了極大的恐慌,老刑警劉巖肄方,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冰垄,死亡現(xiàn)場離奇詭異,居然都是意外死亡权她,警方通過查閱死者的電腦和手機虹茶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隅要,“玉大人蝴罪,你說我怎么就攤上這事〔角澹” “怎么了要门?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長廓啊。 經(jīng)常有香客問我欢搜,道長,這世上最難降的妖魔是什么谴轮? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任炒瘟,我火速辦了婚禮,結果婚禮上第步,老公的妹妹穿的比我還像新娘唧领。我一直安慰自己,他們只是感情好雌续,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布斩个。 她就那樣靜靜地躺著,像睡著了一般驯杜。 火紅的嫁衣襯著肌膚如雪受啥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天鸽心,我揣著相機與錄音滚局,去河邊找鬼。 笑死顽频,一個胖子當著我的面吹牛藤肢,可吹牛的內容都是我干的。 我是一名探鬼主播糯景,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嘁圈,長吁一口氣:“原來是場噩夢啊……” “哼省骂!你這毒婦竟也來了?” 一聲冷哼從身側響起最住,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钞澳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涨缚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轧粟,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年脓魏,在試婚紗的時候發(fā)現(xiàn)自己被綠了兰吟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡茂翔,死狀恐怖混蔼,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情檩电,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布府树,位于F島的核電站俐末,受9級特大地震影響,放射性物質發(fā)生泄漏奄侠。R本人自食惡果不足惜卓箫,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垄潮。 院中可真熱鬧烹卒,春花似錦、人聲如沸弯洗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牡整。三九已至藐吮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逃贝,已是汗流浹背谣辞。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沐扳,地道東北人泥从。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像沪摄,于是被迫代替她去往敵國和親躯嫉。 傳聞我的和親對象是個殘疾皇子纱烘,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容