LVS,Nginx和HAProxy區別


LVS優缺點

LVS的優點:

1、抗負載能力強、工作在第4層僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件里的性能最強的;無流量,同時保證了均衡器IO的性能不會受到大流量的影響;
2、工作穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat;
3、應用范圍比較廣,可以對所有應用做負載均衡;
4、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的幾率;

LVS的缺點:

1、軟件本身不支持正則處理,不能做動靜分離,這就凸顯了Nginx/HAProxy+Keepalived的優勢。
2、如果網站應用比較龐大,LVS/DR+Keepalived就比較復雜了,特別是后面有Windows Server應用的機器,實施及配置還有維護過程就比較麻煩,相對而言,Nginx/HAProxy+Keepalived就簡單多了。

Nginx優缺點

Nginx的優點:

1.工作在OSI第7層,可以針對http應用做一些分流的策略。比如針對域名、目錄結構。它的正則比HAProxy更為強大和靈活;
2.Nginx對網絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢所在;
3.Nginx安裝和配置比較簡單,測試起來比較方便;
4.可以承擔高的負載壓力且穩定,一般能支撐超過幾萬次的並發量;
5.Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點;
6.Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP現在也是非常流行的web環境,大有和LAMP環境分庭抗禮之勢,Nginx在處理靜態頁面、特別是抗高並發方面相對apache有優勢;
7.Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,有需求的朋友可以考慮用其作為反向代理加速器;

Nginx的缺點:

1、Nginx不支持url來檢測。
2、Nginx僅能支持http和Email,這個它的弱勢。
3、Nginx的Session的保持,Cookie的引導能力相對欠缺。

HAProxy

HAProxy的優點:

1、HAProxy是支持虛擬主機的,可以工作在4、7層(支持多網段);
2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作;
3、支持url檢測后端的服務器;
4、它跟LVS一樣,本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在並發處理上也是優於Nginx的;
5、HAProxy可以對Mysql讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡,不過在后端的MySQL slaves數量超過10台時性能不如LVS;
6、HAProxy的算法較多,達到8種;

三者對比:

LVS: 是基於四層的轉發
HAproxy: 是基於四層和七層的轉發,是專業的代理服務器
Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,可以做七層的轉發
區別: LVS由於是基於四層的轉發所以只能做端口的轉發
而基於URL的、基於目錄的這種轉發LVS就做不了

工作選擇:

HAproxy和Nginx由於可以做七層的轉發,所以URL和目錄的轉發都可以做
在很大並發量的時候我們就要選擇LVS,像中小型公司的話並發量沒那么大
選擇HAproxy或者Nginx足已,由於HAproxy由是專業的代理服務器
配置簡單,所以中小型企業推薦使用HAproxy

Cluster:集群,為解決某個特定問題將多台計算機組合起來形成的單個系統

Linux Cluster類型:

LB:Load Balancing,負載均衡

HA:High Availiablity,高可用,SPOF(single Point Of failure)

MTBF:Mean Time Between Failure 平均無故障時間
MTTR:Mean Time To Restoration( repair)平均恢復前時間
A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%

HPC:High-performance computing,高性能 www.top500.org

分布式系統:

分布式存儲: Ceph,GlusterFS,FastDFS,MogileFS
分布式計算:hadoop,Spark
① 集群(cluster)技術是一種較新的技術,通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集群系統中的核心技術。
② 集群是一組相互獨立的、通過高速網絡互聯**的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。
③ 集群組成后,可以利用多個計算機和組合進行海量請求處理(**負載均衡**),從而獲得很高的處理效率,也可以用多個計算機做備份(高可用),使得任何一個機器壞了整個系統還是能正常運行。集群在目前互聯網公司是必備的技術,極大提高互聯網業務的可用性和可縮放性。

負載均衡集群技術

負載均衡(Load Balance):負載均衡集群為企業需求提供了可解決容量問題的有效方案。負載均衡集群使負載可以在計算機集群中盡可能平均地分攤處理

② 負載通常包括應用程序處理負載和網絡流量負載。這樣的系統非常適合向使用同一組應用程序的大量用戶提供服務。每個節點都可以承擔一定的處理負載,並且可以實現處理負載在節點之間的動態分配,以實現負載均衡。對於網絡流量負載,當網絡服務程序接受了高入網流量,以致無法迅速處理,這時,網絡流量就會發送給在其它節點上運行的網絡服務程序。也可根據服務器的承載能力,進行服務請求的分發,從而使用戶的請求得到更快速的處理。

集群和分布式

(1)集群:同一個業務系統,部署在多台服務器上。集群中,每一台服務器實現的功能沒有差別,數據和代碼都是一樣的。

(2)分布式:一個業務被拆成多個子業務,或者本身就是不同的業務,部署在多台服務器上。分布式中,每一台服務器實現的功能是有差別的,數據和代碼也是不一樣的,分布式每台服務器功能加起來,才是完整的業務。

(3)分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

(4)對於大型網站,訪問用戶很多,實現一個群集,在前面部署一個負載均衡服務器,后面幾台服務器完成同一業務。如果有用戶進行相應業務訪問時,負載均衡器根據后端哪台服務器的負載情況,決定由給哪一台去完成響應,並且一台服務器垮了,其它的服務器 可以頂上來。分布式的每一個節點,都完成不同的業務,如果一個節點垮了,那這個業務可能就會失敗。

集群設計原則

(1)可擴展性—集群的橫向擴展能力

(2)可用性—無故障時間(SLA)

(3)性能—訪問響應時間

(4)容量—單位時間內的最大並發吞吐量(C10K 並發問題)

基礎設施層面

提升硬件資源性能—從入口防火牆到后端web server均使用更高性能的硬件資源
多域名—DNS 輪詢A記錄解析
多入口—將A記錄解析到多個公網IP入口
多機房—同城+異地容災
CDN(Content Delivery Network)—基於GSLB(Global Server Load Balance)實現全局負載均衡,如DNS

業務層面

分層:安全層、負載層、靜態層、動態層、(緩存層、存儲層)持久化與非持久化
分割:基於功能分割大業務為小服務
分布式:對於特殊場景的業務,使用分布式計算

分布式

(1)分布式應用-服務按照功能拆分,使用微服務

(2)分布式靜態資源--靜態資源放在不同的存儲集群上

(3)分布式數據和存儲--使用key-value緩存系統

(4)分布式計算--對特殊業務使用分布式計算,比如Hadoop集群

Cluster分類

負載均衡集群技術的實現

硬件

F5 Big-IP
Citrix Netscaler
A10 A10

軟件

lvs:Linux Virtual Server,阿里四層SLB (Server Load Balance)使用
nginx:支持七層調度,阿里七層SLB使用Tengine
haproxy:支持七層調度
ats:Apache Traffic Server,yahoo捐助給apache
perlbal:Perl 編寫
pound

基於工作的協議層次划分:

傳輸層(通用):DPORT

LVS:不支持應用層,不支持cookie
nginx:stream
haproxy:mode tcp

應用層(專用):針對特定協議,自定義的請求模型分類

proxy server:
http:nginx, httpd, haproxy(mode http), ...
fastcgi:nginx, httpd, ...
mysql:mysql-proxy, ...

Cluster相關

會話保持:負載均衡

(1) session sticky:同一用戶調度固定服務器

Source IP:LVS sh算法(對某一特定服務而言)
Cookie

(2) session replication:每台服務器擁有全部session

session multicast cluster

(3) session server:專門的session服務器

Memcached,Redis

HA集群實現方案

keepalived:vrrp協議

Ais:應用接口規范

heartbeat
cman+rgmanager(RHCS)
coresync_pacemaker

LVS介紹

LVS:Linux Virtual Server,負載調度器,內核集成

官網:http://www.linuxvirtualserver.org/

VS: Virtual Server,負責調度
RS: Real Server,負責真正提供服務
L4:四層路由器或交換機
阿里的四層LSB(Server Load Balance)是基於LVS+keepalived實現
LVS是一種四層負載均衡
Nginx 七層負載,四層負載	 
Haproxy 四層七層都可以做
四層應用場景:
1. 四層負載抗壓性能要強於七層
2. 公網ip不足,通過四層負載進行端口調度	
四層和七層區別:
1.四層不包含http協議,只做流量調度
2.根據我們的http請求主題,結合調度策略,向后轉發
 LVS最高可支持10w並發

LVS軟件作用:通過LVS提供的負載均衡技術和Linux操作系統實現一個高性能、高可用的服務器群集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。

優點:

高並發連接:LVS基於內核網絡層面工作,有超強的承載能力和並發處理能力。單台LVS負載均衡器,可支持上萬並發連接。

穩定性強是工作在網絡4層之上僅作分發之用,這個特點也決定了它在負載均衡軟件里的性能最強,穩定性最好,對內存和cpu資源消耗極低。

成本低廉硬件負載均衡器少則十幾萬,多則幾十萬上百萬,LVS只需一台服務器和就能免費部署使用,性價比極高。

配置簡單LVS配置非常簡單,僅需幾行命令即可完成配置,也可寫成腳本進行管理。

支持多種算法支持多種論調算法,可根據業務場景靈活調配進行使用

支持多種工作模型可根據業務場景,使用不同的工作模式來解決生產環境請求處理問題。

應用范圍廣:因為LVS工作在4層,所以它幾乎可以對所有應用做負載均衡,包括http、數據庫、DNS、ftp服務等等

缺點:工作在4層,不支持7層規則修改,機制過於龐大,不適合小規模應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM