您現在的位置是:首頁 > 棋牌

什麼是叢集?為什麼要使用叢集架構?

  • 由 渲大師渲染 發表于 棋牌
  • 2022-07-12
簡介負載均衡叢集執行時,一般是透過一個或多個前端負載均衡器將客戶訪問請求分發到後端的一組伺服器上,從而達到整個系統的高效能和高可用性

叢集的節點是什麼

一、什麼是叢集?

簡單地說,叢集就是指一組(若干個)相互獨立的計算機,利用高速通訊網路組成的一個較大的計算機服務系統,每個叢集節點(即叢集中的每臺計算機)都是執行各自服務的獨立伺服器。這些伺服器之間可以彼此通訊,協同向用戶提供應用程式,系統資源和資料,並以單一系統的模式加以管理。當用戶請求集群系統時,叢集給使用者的感覺就是一個單一獨立的伺服器,而實際上使用者請求的是一組叢集伺服器。

舉個例子:

開啟谷歌,百度的頁面,看起來好簡單,也許你覺得用幾分鐘就可以製作出相似的網頁,而實際上,這個頁面的背後是由成千上萬臺伺服器叢集協同工作的結果。

若要用一句話描述叢集,即一堆伺服器合作做同一件事,這些機器可能需要統一協調管理,可以分佈在一個機房,也可以分佈在全國全球各個地區的多個機房。

二、為什麼要使用叢集?

(1)高效能

一些國家重要的計算密集型應用(如天氣預報,核試驗模擬等),需要計算機有很強的運算處理能力。以全世界現有的技術,即使是大型機器,其計算能力也是有限的,很難單獨完成此任務。因為計算時間可能會相當長,也許幾天,甚至幾年或更久。因此,對於這類複雜的計算業務,便使用了計算機叢集技術,集中幾十上百臺,甚至成千上萬臺計算機進行計算。

什麼是叢集?為什麼要使用叢集架構?

假如你配一個LNMP環境,每次只需要服務10個併發請求,那麼單臺伺服器一定會比多個伺服器叢集要快。只有當併發或總請求數量超過單臺伺服器的承受能力時,伺服器叢集才會體現出優勢。

(2)價格有效性

通常一套系統叢集架構,只需要幾臺或數十臺伺服器主機即可。與動輒價值上百萬元的專用超級計算機相比便宜了很多。在達到同樣效能需求的條件下,採用計算機叢集架構比採用同等運算能力的大型計算機具有更高的價效比。

早期的淘寶,支付寶的資料庫等核心系統就是使用上百萬元的小型機伺服器。後因使用維護成本太高以及擴充套件裝置費用成幾何級數翻倍,甚至成為擴充套件瓶頸,人員維護也十分困難,最終使用PC伺服器叢集替換之,比如,把資料庫系統從小機結合Oracle資料庫遷移到MySQL開源資料庫結合PC伺服器上來。不但成本下降了,擴充套件和維護也更容易了。

(3)可伸縮性

當服務負載,壓力增長時,針對集群系統進行較簡單的擴充套件即可滿足需求,且不會降低服務質量。

通常情況下,硬體裝置若想擴充套件效能,不得不增加新的CPU和儲存器裝置,如果加不上去了,就不得不購買更高效能的伺服器,就拿我們現在的伺服器來講,可以增加的裝置總是有限的。如果採用叢集技術,則只需要將新的單個伺服器加入現有叢集架構中即可,從訪問的客戶角度來看,系統服務無論是連續性還是效能上都幾乎沒有變化,系統在不知不覺中完成了升級,加大了訪問能力,輕鬆地實現了擴充套件。集群系統中的節點數目可以增長到幾千乃至上萬個,其伸縮性遠超過單臺超級計算機。

(4)高可用性

單一的計算機系統總會面臨裝置損毀的問題,如CPU,記憶體,主機板,電源,硬碟等,只要一個部件壞掉,這個計算機系統就可能會宕機,無法正常提供服務。在集群系統中,儘管部分硬體和軟體還是會發生故障,但整個系統的服務可以是7*24小時可用的。

叢集架構技術可以使得系統在若干硬體裝置故障發生時仍可以繼續工作,這樣就將系統的停機時間減少到了最小。集群系統在提高系統可靠性的同時,也大大減小了系統故障帶來的業務損失,目前幾乎100%的網際網路網站都要求7*24小時提供服務。

(5)透明性

多個獨立計算機組成的松耦合集群系統構成一個虛擬伺服器。使用者或客戶端程式訪問集群系統時,就像訪問一臺高效能,高可用的伺服器一樣,叢集中一部分伺服器的上線,下線不會中斷整個系統服務,這對使用者也是透明的。

(6)可管理性

整個系統可能在物理上很大,但其實容易管理,就像管理一個單一映像系統一樣。在理想狀況下,軟硬體模組的插入能做到即插即用。

(7)可程式設計性

在集群系統上,容易開發及修改各類應用程式。

三、叢集的常見分類

1、叢集的常見分類

計算機叢集架構按功能和結構可以分成以下幾類:

負載均衡叢集,簡稱LBC或者LB

高可用性叢集,簡稱HAC

高效能計算叢集,簡稱HPC

網格計算叢集

提示:

負載均衡叢集和高可用性叢集是網際網路行業常用的叢集架構模式,也是我們要學習的重點。

2、叢集的常見分類

(1)負載均衡叢集

-負載均衡叢集為企業提供了更為實用,價效比更高的系統架構解決方案。負載均衡叢集可以把很多客戶集中的訪問請求負載壓力盡可能平均地分攤在計算機叢集中處理。客戶訪問請求負載通常包括應用程式處理負載和網路流量負載。這樣的系統非常適合使用同一組應用程式為大量使用者提供服務的模式,每個節點都可以承擔一定的訪問請求負載壓力,並且可以實現訪問請求在各節點之間動態分配,以實現負載均衡。

負載均衡叢集執行時,一般是透過一個或多個前端負載均衡器將客戶訪問請求分發到後端的一組伺服器上,從而達到整個系統的高效能和高可用性。一般高可用性叢集和負載均衡叢集會使用類似的技術,或同時具有高可用性與負載均衡的特點。

負載均衡叢集的作用為:

分攤使用者訪問請求及資料流量(負載均衡)

保持業務連續性,即7*24小時服務(高可用性)。

應用於Web及資料庫等伺服器的業務

負載均衡叢集典型的開源軟體包括LVS,Nginx,Haproxy等。如下圖所示:

什麼是叢集?為什麼要使用叢集架構?

提示:

不同的業務會有若干秒的切換時間,DB業務明顯長於Web業務切換時間。

(2)高可用性叢集

一般是指在叢集中任意一個節點失效的情況下,該節點上的所有任務會自動轉移到其他正常的節點上。此過程並不影響整個叢集的執行。

當叢集中的一個節點系統發生故障時,執行者的叢集服務會迅速作出反應,將該系統的服務分配到叢集中其他正在工作的系統上執行。考慮到計算機硬體和軟體的容錯性,高可用性叢集的主要目的是使叢集的整體服務儘可能可用。如果高可用性叢集中的主節點發生了故障,那麼這段時間內將由備份節點代替它。備節點通常是主節點的映象。當它代替主節點時,它可以完全接管主節點(包括IP地址及其他資源)提供服務,因此,使集群系統環境對於使用者來說是一致的,即不會影響使用者的訪問。

高可用性叢集使伺服器系統的執行速度和響應速度會盡可能的快。他們經常利用在多臺機器上執行的冗餘節點和伺服器來相互跟蹤。如果某個節點失敗,它的替補者將在幾秒鐘或更短時間內接管它的職責。因此,對於使用者而言,集群裡的任意一臺機器宕機,業務都不會受影響(理論情況下)。

高可用性叢集的作用為:

當一臺機器宕機時,另外一臺機器接管宕機的機器的IP資源和服務資源,提供服務。

常用於不易實現負載均衡的應用,比如負載均衡器,主資料庫,主儲存對之間。

高可用性叢集常用的開源軟體包括Keepalived,Heartbeat等,其架構圖如下圖所示:

什麼是叢集?為什麼要使用叢集架構?

(3)高效能計算叢集

高效能計算叢集也稱平行計算。通常,高效能計算叢集涉及為叢集開發的並行應用程式,以解決複雜的科學問題(天氣預報,石油勘探,核反應模擬等)。高效能計算叢集對外就好像一個超級計算機,這種超級計算機內部由數十至上萬個獨立伺服器組成,並且在公共訊息傳遞層上進行通訊以並行執行應用程式。在生產環境中實際就是把任務切成蛋糕,然後下發到叢集節點計算,計算後返回結果,然後繼續領新任務計算,如此往復。

(4)網格計算叢集

由於很少用到,在此略過

特別提示:

在網際網路的網站中,比較常用的就是負載均衡叢集和高可用性叢集

四、常用的叢集軟硬體介紹及選型

1、企業中常見的叢集軟硬體產品

網際網路企業常用的開源叢集軟體有:Nginx,LVS,Haproxy,Keepalived,heartbeat。

網際網路企業常用的商業叢集硬體有:F5,Netscaler,Radware,A10等,工作模式相當於Haproxy的工作模式。

淘寶,趕集網,新浪等公司曾使用過Netscaler負載均衡產品。叢集硬體Netscaler的產品圖如下圖所示:

什麼是叢集?為什麼要使用叢集架構?

叢集硬體F5產品如下圖所示:

什麼是叢集?為什麼要使用叢集架構?

2、對於叢集軟硬體產品如何選型

當企業業務重要,技術力量又薄弱,並且希望出錢購買產品及獲取更好的服務時,可以選擇硬體負載均衡產品,如F5,Netscaler,Radware等,此類公司多為傳統的大型非網際網路企業,如銀行,證券,金融業及寶馬,賓士公司等

對於入口網站來說,大多會用軟體及硬體產品來分擔單一產品的風險,如淘寶,騰訊,新浪等。融資了的企業會購買硬體產品,如趕集網等網站。

中小型網際網路企業,由於起步階段無利潤可賺或者利潤很低,會希望透過使用開源免費的方案來解決問題,因此會僱傭專門的運維人員進行維護。例如:51CTO等

相比較而言,商業的負載均衡產品成本高,效能好,更穩定,缺點是不能二次開發,開源的負載均衡軟體對運維人員的能力要求較高,如果運維及開發能力強,那麼開源的負載均衡軟體是不錯的選擇,

目前的網際網路行業更傾向於使用開源的負載均衡軟體。

3、如何選擇開源叢集軟體產品

中小企業網際網路公司網站在併發訪問和總訪問量不是很大的情況下,建議首選Nginx負載均衡,理由是Nginx負載均衡配置簡單,使用方便,安全穩定,社群活躍,使用的人逐漸增多,成為流行趨勢,另外一個實現負載均衡的類似產品為Haproxy(支援L4和L7負載,同樣優秀,但社群不如Nginx活躍)。

如果要考慮Nginx負載均衡的高可用功能,建議首選Keepalived軟體,理由是安裝和配置簡單,使用方便,安全穩定,與Keepalived服務類似的高可用軟體還有Heartbeat(使用比較複雜,並不建議初學者使用)

如果是大型企業網際網路公司,負載均衡產品可以使用LVS+Keepalived在前端做四層轉發(一般是主備或主主,如果需要擴充套件可以使用DNS或前端使用OSPF),後端使用Nginx或者Haproxy做7層轉發(可以擴充套件到百臺),再後面是應用伺服器,如果是資料庫與儲存的負載均衡和高可用,建議選擇LVS+Heartbeat,LVS支援TCP轉發且DR模式效率很高,Heartbeat可以配合drbd,不但可以進行VIP的切換,還可以支援塊裝置級別的資料同步(drbd),以及資源服務的管理。

Top