集群 分布式 負載均衡區別

2022-07-01 02:30:11 字數 4489 閱讀 5761

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

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

隨著業務量的提高,現有網路的各個核心部分訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,甚至效能再卓越的裝置也不能滿足當前業務量增長的需求。

負載均衡技術通過設定虛擬伺服器ip(vip),將後端多台真實伺服器的應用資源虛擬成一台高效能的應用伺服器,通過負載均衡演算法,將使用者的請求**給後台內網伺服器,內網伺服器將請求的響應返回給負載平衡器,負載平衡器再將響應傳送到使用者,這樣就向網際網路使用者隱藏了內網結構,阻止了使用者直接訪問後台(內網)伺服器,使得伺服器更加安全,可以阻止對核心網路棧和執行在其它埠服務的攻擊。並且負載均衡裝置(軟體或硬體)會持續的對伺服器上的應用狀態進行檢查,並自動對無效的應用伺服器進行隔離,實現了乙個簡單、擴充套件性強、可靠性高的應用解決方案,解決了單台伺服器處理效能不足,擴充套件性不夠,可靠性較低的問題。

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

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

詳細的訪問流程分析:

負載均衡裝置在將資料報發給伺服器時,資料報是做了一些變化的,如上圖所示,資料報到達負載均衡裝置之前,源位址是: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,然後**給使用者,保證了訪問的一致性。

一般來說負載均衡裝置都會預設支援多種負載均衡分發策略,例如:

健康檢查用於檢查伺服器開放的各種服務的可用狀態。負載均衡裝置一般會配置各種健康檢查方法,例如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位址,才能和網際網路連線。

通過新增或減少伺服器數量,可以更好的應對高併發請求。

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

鏈路層(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,因此可以實現下圖所示的分發:

集群 分布式 負載均衡

1 linux集群主要分成三大類 高可用集群,負載均衡集群,科學計算集群 負載均衡集群 load balance cluster 負載均衡系統 集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般web伺服器集群 資料庫集群和應用伺服器集群都屬於這種型別。負載均衡集群一般用於相應網路請求的網...

集群,負載均衡,分布式

簡潔明瞭的解釋 記錄一下 集群 一堆伺服器互聯 負載均衡 一堆伺服器分攤壓力 分布式 一堆伺服器分開工作 相對來說,集群一般是指一堆伺服器去做同一項工作,一般是集中高速互聯實現快速的運算,對外的感覺是一台伺服器。負載均衡也是一堆伺服器做同一項工作,不同的伺服器做的事情基本相同,但是對外能發現是不同的...

集群 分布式 負載均衡

計算機集群通過一組鬆散整合的計算機軟體和 或硬體連線起來高度緊密地協作完成計算工作。集群系統中的單個計算機通常稱為節點。集群計算機通常用來改進單個計算機的計算速度和可靠性。單個重負載的運算分擔到多台節點裝置上做並行處理,每個節點裝置處理結束後,將結果彙總,返回給使用者,系統處理能力得到大幅度提高。乙...