集群、分布式、負載均衡區別


集群的概念

        計算機集群通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看作是一台計算機。集群系統中的單個計算機通常稱為節點,通常通過局域網連接,但也有其它的可能連接方式。集群計算機通常用來改進單個計算機的計算速度和/或可靠性。

比如單個重負載的運算分擔到多台節點設備上做並行處理,每個節點設備處理結束后,將結果匯總,返回給用戶,系統處理能力得到大幅度提高。一般分為幾種:

  • 高可用性集群:一般是指當集群中有某個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上。還指可以將集群中的某節點進行離線維護再上線,該過程並不影響整個集群的運行。
  • 負載均衡集群:負載均衡集群運行時,一般通過一個或者多個前端負載均衡器,將工作負載分發到后端的一組服務器上,從而達到整個系統的高性能和高可用性。
  • 高性能計算集群:高性能計算集群采用將計算任務分配到集群的不同計算節點而提高計算能力,因而主要應用在科學計算領域。

分布式

       集群:同一個業務,部署在多個服務器上。分布式:一個業務分拆成多個子業務,或者本身就是不同的業務,部署在不同的服務器上。
  簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個均衡服務器,后面幾台服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪台服務器的負載不是很重,就將給哪一台去完成,並且一台服務器垮了,其它的服務器可以頂上來。分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務可能就失敗了。

負載均衡

概念

  隨着業務量的提高,現有網絡的各個核心部分訪問量和數據流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的服務器設備根本無法承擔。在此情況下,如果扔掉現有設備去做大量的硬件升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提升時,這又將導致再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能滿足當前業務量增長的需求。
  負載均衡技術通過設置虛擬服務器IP(VIP),將后端多台真實服務器的應用資源虛擬成一台高性能的應用服務器,通過負載均衡算法,將用戶的請求轉發給后台內網服務器,內網服務器將請求的響應返回給負載平衡器,負載平衡器再將響應發送到用戶,這樣就向互聯網用戶隱藏了內網結構,阻止了用戶直接訪問后台(內網)服務器,使得服務器更加安全,可以阻止對核心網絡棧和運行在其它端口服務的攻擊。並且負載均衡設備(軟件或硬件)會持續的對服務器上的應用狀態進行檢查,並自動對無效的應用服務器進行隔離,實現了一個簡單、擴展性強、可靠性高的應用解決方案,解決了單台服務器處理性能不足,擴展性不夠,可靠性較低的問題。

服務器負載均衡有三大基本Feature:負載均衡算法,健康檢查和會話保持,這三個Feature是保證負載均衡正常工作的基本要素。其他一些功能都是在這三個功能之上的一些深化。

在沒有部署負載均衡設備之前,用戶直接訪問服務器地址(中間或許有在防火牆上將服務器地址映射成別的地址,但本質上還是一對一的訪問)。當單台服務器由於性能不足無法處理眾多用戶的訪問時,就要考慮用多台服務器來提供服務,實現的方式就是負載均衡。負載均衡設備的實現原理是把多台服務器的地址映射成一個對外的服務IP(我們通常稱之為VIP,關於服務器的映射可以直接將服務器IP映射成VIP地址,也可以將服務器IP:Port映射成VIP:Port,不同的映射方式會采取相應的健康檢查,在端口映射時,服務器端口與VIP端口可以不相同),這個過程對用戶端是不可見的,用戶實際上不知道服務器是做了負載均衡的,因為他們訪問的還是一個目的IP,那么用戶的訪問到達負載均衡設備后,如何把用戶的訪問分發到合適的服務器就是負載均衡設備要做的工作了,具體來說用到的就是上述的三大Feature。

詳細的訪問流程分析:

用戶(IP:207.17.117.20)訪問域名www.a10networks.com,首先會通過DNS查詢解析出這個域名的公網地址:199.237.202.124,接下來用戶207.17.117.20會訪問199.237.202.124這個地址,因此數據包會到達負載均衡設備,接下來負載均衡設備會把數據包分發到合適的服務器,看下圖:

負載均衡設備在將數據包發給服務器時,數據包是做了一些變化的,如上圖所示,數據包到達負載均衡設備之前,源地址是:207.17.117.20,目的地址是:199.237.202.124,當負載均衡設備將數據包轉發給選中的服務器時,源地址還是:207.17.117.20,目的地址變為172.16.20.1,我們稱這種方式為目的地址NAT(DNAT,目的地址轉換)。一般來說,在服務器負載均衡中DNAT是一定要做的(還有另一種模式叫做服務器直接返回-DSR,是不做DNAT的,我們將另行討論),而源地址根據部署模式的不同,有時候也需要轉換成別的地址,我們稱之為:源地址NAT(SNAT),一般來說,旁路模式需要做SNAT,而串接模式不需要,本示意圖為串接模式,所以源地址沒做NAT。
  我們再看服務器的返回包,如下圖所示,也經過了IP地址的轉換過程,不過應答包中源/目的地址與請求包正好對調,從服務器回來的包源地址為172.16.20.1,目的地址為207.17.117.20,到達負載均衡設備后,負載均衡設備將源地址改為199.237.202.124,然后轉發給用戶,保證了訪問的一致性。

負載均衡算法

  一般來說負載均衡設備都會默認支持多種負載均衡分發策略,例如:

  • 輪詢(RoundRobin)將請求順序循環地發到每個服務器。當其中某個服務器發生故障,AX就把其從順序循環隊列中拿出,不參加下一次的輪詢,直到其恢復正常。
  • 比率(Ratio):給每個服務器分配一個加權值為比例,根椐這個比例,把用戶的請求分配到每個服務器。當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
  • 優先權(Priority):給所有服務器分組,給每個組定義優先權,將用戶的請求分配給優先級最高的服務器組(在同一組內,采用預先設定的輪詢或比率算法,分配用戶的請求);當最高優先級中所有服務器或者指定數量的服務器出現故障,AX將把請求送給次優先級的服務器組。這種方式,實際為用戶提供一種熱備份的方式。
  • 最少連接數(LeastConnection):AX會記錄當前每台服務器或者服務端口上的連接數,新的連接將傳遞給連接數最少的服務器。當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
  • 最快響應時間(Fast Reponse time):新的連接傳遞給那些響應最快的服務器。當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
  • 哈希算法( hash): 將客戶端的源地址,端口進行哈希運算,根據運算的結果轉發給一台服務器進行處理,當其中某個服務器發生故障,就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
  • 基於數據包的內容分發:例如判斷HTTP的URL,如果URL中帶有.jpg的擴展名,就把數據包轉發到指定的服務器。

健康檢查

  健康檢查用於檢查服務器開放的各種服務的可用狀態。負載均衡設備一般會配置各種健康檢查方法,例如Ping,TCP,UDP,HTTP,FTP,DNS等。Ping屬於第三層的健康檢查,用於檢查服務器IP的連通性,而TCP/UDP屬於第四層的健康檢查,用於檢查服務端口的UP/DOWN,如果要檢查的更准確,就要用到基於7層的健康檢查,例如創建一個HTTP健康檢查,Get一個頁面回來,並且檢查頁面內容是否包含一個指定的字符串,如果包含,則服務是UP的,如果不包含或者取不回頁面,就認為該服務器的Web服務是不可用(DOWN)的。比如,負載均衡設備檢查到172.16.20.3這台服務器的80端口是DOWN的,負載均衡設備將不把后面的連接轉發到這台服務器,而是根據算法將數據包轉發到別的服務器。創建健康檢查時可以設定檢查的間隔時間和嘗試次數,例如設定間隔時間為5秒,嘗試次數為3,那么負載均衡設備每隔5秒發起一次健康檢查,如果檢查失敗,則嘗試3次,如果3次都檢查失敗,則把該服務標記為DOWN,然后服務器仍然會每隔5秒對DOWN的服務器進行檢查,當某個時刻發現該服務器健康檢查又成功了,則把該服務器重新標記為UP。健康檢查的間隔時間和嘗試次數要根據綜合情況來設置,原則是既不會對業務產生影響,又不會對負載均衡設備造成較大負擔。

會話保持

  如何保證一個用戶的兩次http請求轉發到同一個服務器,這就要求負載均衡設備配置會話保持。
  會話保持用於保持會話的連續性和一致性,由於服務器之間很難做到實時同步用戶訪問信息,這就要求把用戶的前后訪問會話保持到一台服務器上來處理。舉個例子,用戶訪問一個電子商務網站,如果用戶登錄時是由第一台服務器來處理的,但用戶購買商品的動作卻由第二台服務器來處理,第二台服務器由於不知道用戶信息,所以本次購買就不會成功。這種情況就需要會話保持,把用戶的操作都通過第一台服務器來處理才能成功。當然並不是所有的訪問都需要會話保持,例如服務器提供的是靜態頁面比如網站的新聞頻道,各台服務器都有相同的內容,這種訪問就不需要會話保持。
  絕大多數的負載均衡產品都支持兩類基本的會話保持方式:源/目的地址會話保持和cookie會話保持,另外像hash,URL Persist等也是比較常用的方式,但不是所有設備都支持。基於不同的應用要配置不同的會話保持,否則會引起負載的不均衡甚至訪問異常。我們主要分析B/S結構的會話保持。

NAT(Network Address Translation,網絡地址轉換):當在專用網內部的一些主機本來已經分配到了本地IP地址(即僅在本專用網內使用的專用地址),但現在又想和因特網上的主機通信(並不需要加密)時,可使用NAT方法。這種方法需要在專用網連接到因特網的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和因特網連接。

負載均衡的其他好處

  • 高擴展性

  通過添加或減少服務器數量,可以更好的應對高並發請求。

  • (服務器)健康檢查

  負載均衡器可以檢查后台服務器應用層的健康狀況並從服務器池中移除那些出現故障的服務器,提高可靠性。

  • HTTP緩存

  • 入侵阻止功能

鏈路層(OSI 第二層)負載均衡

  在通信協議的數據鏈路層修改mac地址,進行負載均衡。
  數據分發時,不修改ip地址(因為還看不到ip地址),只修改目標mac地址,並且配置所有后端服務器虛擬ip和負載均衡器ip地址一致,達到不修改數據包的源地址和目標地址,進行數據分發的目的。
  實際處理服務器ip和數據請求目的ip一致,不需要經過負載均衡服務器進行地址轉換,可將響應數據包直接返回給用戶瀏覽器,避免負載均衡服務器網卡帶寬成為瓶頸。也稱為直接路由模式(DR模式)。如下圖:

性能很好,但是配置復雜,目前應用比較廣泛。

傳輸層(OSI 第四層)負載均衡

  傳輸層是 OSI 第四層,包括 TCP 和 UDP。流行的傳輸層負載均衡器有 HAProxy(這個也用於應用層負載均衡)和 IPVS。
  主要通過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
  以常見的TCP為例,負載均衡設備在接收到第一個來自客戶端的SYN 請求時,即通過上述方式選擇一個最佳的服務器,並對報文中目標IP地址進行修改(改為后端服務器IP),直接轉發給該服務器。TCP的連接建立,即三次握手是客戶端和服務器直接建立的,負載均衡設備只是起到一個類似路由器的轉發動作。在某些部署情況下,為保證服務器回包可以正確返回給負載均衡設備,在轉發報文的同時可能還會對報文原來的源地址進行修改。

應用層(OSI 第七層)負載均衡

  應用層是 OSI 第七層。它包括 HTTP、HTTPS 和 WebSockets。一款非常流行又久經考驗的應用層負載均衡器就是 Nginx[恩靜埃克斯 = Engine X]。
  所謂七層負載均衡,也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。注意此時可以看到具體的http請求的完整url,因此可以實現下圖所示的分發:

 

在集群的類型通常有3種:LB:Load Banlancing(負載)、HA:High Availability(高可用)、HP:High Performace(高性能)。LB:負載均衡集群中有一個分發器或者叫調度器,我們將其稱之為Director,它處在多台服務器的上面,分發器根據內部鎖定義的規則或調度方式從下面的服務器群中選擇一個以此來響應客戶端發送的請求,從而解決高並發的問題。在擴展中可非常容易的使用scale out擴展,從而實現集群的伸縮性,在業內常見開源解決方案有lvs、haprox、nginx、ats;HA:高可用集群是服務的可用性比較高,當我們某台服務器死機后不會造成我們的服務不可用。其工作模式則是將一個具有故障的服務轉交給一個正常工作的服務器,從而達到服務不會中斷。一般來說我們集群中工作在前端(分發器)的服務器都會對我們的后端服務器做一個健康檢查,如果發現我們服務器當機就不會對其在做轉發,衡量標准:可用性=在線時間/(在線時間+故障處理時間),就是通常我們說的可用性99%、99.9%、99.99%等等,在業內常見開源解決方案有heartbeat、keepalived等等;HP:高性能的集群是當某一個任務量非常大的時候,我們做一個集群共同來完成這一個任務。這種處理方式我們稱為並行處理集群,並行處理集群是將大任務划分為小任務,分別進行處理的機制,常常用於大數據分析,海量資源整合,目前比較出名的就是Hadoop。

   總之,在實際生產環境中我們都可以根據實際情況來挑選合適的集群解決方案,3種集群的側重各有不同,LB集群着重在於提供服務並發處理能力,HA集群以提升服務在線的能力實現服務不間斷,HP集群着重用於處理一個海量任務。


免責聲明!

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



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