觀nginx與lvs負載均衡的較量
在技術工作者中,常用到的就是lvs負載均衡和Nginx負載均衡了。這兩者也是比較普及的。那么,根據不同的需求,兩者存在著不同的優勢。具體選擇哪一個,還要看您的要求了。那么我們在此為大家分享一篇文章,對兩者進行了對比,希望能給您一個參考。
下面來分析一下lvs負載均衡和Nginx負載均衡的區別:
一、lvs負載均衡的優勢:
1、抗負載能力強,因為lvs工作方式的邏輯是非常之簡單,而且工作在網絡4層僅做請求分發之用,沒有流量,所以在效率上基本不需要太過考慮。在我手里的lvs,僅僅出過一次問題:在并發***的一小段時間內均衡器出現丟包現象,據分析為網絡問題,即網卡或linux2.4內核的承載能力已到上限,內存和cpu方面基本無消耗。
2、配置性低,這通常是一大劣勢,但同時也是一大優勢,因為沒有太多可配置的選項,所以除了增減服務器,并不需要經常去觸碰它,大大減少了人為出錯的幾率。
3、工作穩定,因為其本身抗負載能力很強,所以穩定性高也是順理成章,另外各種lvs都有完整的雙機熱備方案,所以一點不用擔心均衡器本身會出什么問題,節點出現故障的話,lvs會自動判別,所以系統整體是非常穩定的。
4、無流量,上面已經有所提及了。lvs僅僅分發請求,而流量并不從它本身出去,所以可以利用它這點來做一些線路分流之用。沒有流量同時也保住了均衡器的IO性能不會受到大流量的影響。
5、基本上能支持所有應用,因為lvs工作在4層,所以它可以對幾乎所有應用做負載均衡,包括http、數據庫、聊天室等等。
另:lvs也不是完全能判別節點故障的,譬如在wlc分配方式下,集群里有一個節點沒有配置VIP,會使整個集群不能使用,這時使用wrr分配方式則會丟掉一臺機。目前這個問題還在進一步測試中。所以,用lvs也得多多當心為妙。
二、nginx和lvs負載均衡作對比的結果
1、nginx工作在網絡的7層,所以它可以針對http應用本身來做分流策略,比如針對域名、目錄結構等,相比之下lvs并不具備這樣的功能,所以nginx單憑這點可利用的場合就遠多于lvs了;但nginx有用的這些功能使其可調整度要高于lvs,所以經常要去觸碰觸碰,由lvs的第2條優點看,觸碰多了,人為出問題的幾率也就會大。
2、nginx對網絡的依賴較小,理論上只要ping得通,網頁訪問正常,nginx就能連得通,nginx同時還能區分內外網,如果是同時擁有內外網的節點,就相當于單機擁有了備份線路;lvs就比較依賴于網絡環境,目前來看服務器在同一網段內并且lvs使用direct方式分流,效果較能得到保證。另外注意,lvs需要向托管商至少申請多一個ip來做Visual IP,貌似是不能用本身的IP來做VIP的。要做好LVS管理員,確實得跟進學習很多有關網絡通信方面的知識,就不再是一個HTTP那么簡單了。
三、后話
lvs和nginx都可以用作多機負載的方案,它們各有優缺,在生產環境中需要好好分析實際情況并加以利用。做技術切不可人云亦云,我云即你云;同時也不可太趨向保守,過于相信舊有方式而等別人來幫你做墊被測試。把所有即時聽說到的好東西加以鉆研,從而提高自己對技術的認知和水平,乃是一個好習慣。