觀nginx與lvs負(fù)載均衡的較量
在技術(shù)工作者中,常用到的就是lvs負(fù)載均衡和Nginx負(fù)載均衡了。這兩者也是比較普及的。那么,根據(jù)不同的需求,兩者存在著不同的優(yōu)勢(shì)。具體選擇哪一個(gè),還要看您的要求了。那么我們?cè)诖藶榇蠹曳窒硪黄恼?,?duì)兩者進(jìn)行了對(duì)比,希望能給您一個(gè)參考。
下面來(lái)分析一下lvs負(fù)載均衡和Nginx負(fù)載均衡的區(qū)別:
一、lvs負(fù)載均衡的優(yōu)勢(shì):
1、抗負(fù)載能力強(qiáng),因?yàn)閘vs工作方式的邏輯是非常之簡(jiǎn)單,而且工作在網(wǎng)絡(luò)4層僅做請(qǐng)求分發(fā)之用,沒有流量,所以在效率上基本不需要太過(guò)考慮。在我手里的lvs,僅僅出過(guò)一次問(wèn)題:在并發(fā)***的一小段時(shí)間內(nèi)均衡器出現(xiàn)丟包現(xiàn)象,據(jù)分析為網(wǎng)絡(luò)問(wèn)題,即網(wǎng)卡或linux2.4內(nèi)核的承載能力已到上限,內(nèi)存和cpu方面基本無(wú)消耗。
2、配置性低,這通常是一大劣勢(shì),但同時(shí)也是一大優(yōu)勢(shì),因?yàn)闆]有太多可配置的選項(xiàng),所以除了增減服務(wù)器,并不需要經(jīng)常去觸碰它,大大減少了人為出錯(cuò)的幾率。
3、工作穩(wěn)定,因?yàn)槠浔旧砜关?fù)載能力很強(qiáng),所以穩(wěn)定性高也是順理成章,另外各種lvs都有完整的雙機(jī)熱備方案,所以一點(diǎn)不用擔(dān)心均衡器本身會(huì)出什么問(wèn)題,節(jié)點(diǎn)出現(xiàn)故障的話,lvs會(huì)自動(dòng)判別,所以系統(tǒng)整體是非常穩(wěn)定的。
4、無(wú)流量,上面已經(jīng)有所提及了。lvs僅僅分發(fā)請(qǐng)求,而流量并不從它本身出去,所以可以利用它這點(diǎn)來(lái)做一些線路分流之用。沒有流量同時(shí)也保住了均衡器的IO性能不會(huì)受到大流量的影響。
5、基本上能支持所有應(yīng)用,因?yàn)閘vs工作在4層,所以它可以對(duì)幾乎所有應(yīng)用做負(fù)載均衡,包括http、數(shù)據(jù)庫(kù)、聊天室等等。
另:lvs也不是完全能判別節(jié)點(diǎn)故障的,譬如在wlc分配方式下,集群里有一個(gè)節(jié)點(diǎn)沒有配置VIP,會(huì)使整個(gè)集群不能使用,這時(shí)使用wrr分配方式則會(huì)丟掉一臺(tái)機(jī)。目前這個(gè)問(wèn)題還在進(jìn)一步測(cè)試中。所以,用lvs也得多多當(dāng)心為妙。
二、nginx和lvs負(fù)載均衡作對(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)常要去觸碰觸碰,由lvs的第2條優(yōu)點(diǎn)看,觸碰多了,人為出問(wèn)題的幾率也就會(huì)大。
2、nginx對(duì)網(wǎng)絡(luò)的依賴較小,理論上只要ping得通,網(wǎng)頁(yè)訪問(wèn)正常,nginx就能連得通,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)單了。
三、后話
lvs和nginx都可以用作多機(jī)負(fù)載的方案,它們各有優(yōu)缺,在生產(chǎn)環(huán)境中需要好好分析實(shí)際情況并加以利用。做技術(shù)切不可人云亦云,我云即你云;同時(shí)也不可太趨向保守,過(guò)于相信舊有方式而等別人來(lái)幫你做墊被測(cè)試。把所有即時(shí)聽說(shuō)到的好東西加以鉆研,從而提高自己對(duì)技術(shù)的認(rèn)知和水平,乃是一個(gè)好習(xí)慣。