日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

浅谈群集与分布式基础知识

發(fā)布時(shí)間:2025/3/18 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈群集与分布式基础知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? 長(zhǎng)期以來(lái)對(duì)于做IT的人員來(lái)說(shuō)可能會(huì)經(jīng)常聽見一個(gè)名詞,群集,什么負(fù)載均衡群集,高可用群集,雙活群集,這對(duì)于非相關(guān)人員來(lái)說(shuō)根本不明白是什么意思,好像群集很神秘,很高大上,其實(shí)群集的概念并沒(méi)有想象中那么復(fù)雜,本文老王會(huì)試著用比較簡(jiǎn)單的語(yǔ)言,來(lái)為大家分享我所學(xué)習(xí)了解的群集知識(shí),盡量讓只有簡(jiǎn)單服務(wù)器 網(wǎng)絡(luò)基礎(chǔ)的朋友也可以聽懂,如果有說(shuō)的不對(duì)的地方歡迎指正


? 什么是群集呢,簡(jiǎn)單來(lái)說(shuō),群集就是把一堆計(jì)算機(jī)組合起來(lái)做一件事情,把一堆計(jì)算機(jī)組合起來(lái)一起干活,它們就可以叫做群集,通常群集給人的感覺就好像是一個(gè)“整體計(jì)算機(jī)”在提供服務(wù)。

? ?

? 具體細(xì)化來(lái)講,群集又分為可以分為高可用群集,負(fù)載均衡群集,以及高性能計(jì)算群集,其中比較常見的是高可用性群集和負(fù)載均衡群集


? 什么是高可用群集呢,所謂高可用群集,即是說(shuō)該群集具備故障轉(zhuǎn)移切換機(jī)制,當(dāng)其中一臺(tái)服務(wù)器宕機(jī),其它服務(wù)器可以快速的接管宕機(jī)服務(wù)器提供的服務(wù),確保業(yè)務(wù)的持續(xù)可用性,例如,某公司有一個(gè)網(wǎng)站平臺(tái),提供網(wǎng)頁(yè)端查詢服務(wù),有一個(gè)前端和兩個(gè)后端,當(dāng)用戶在網(wǎng)頁(yè)查詢時(shí),實(shí)際上前端會(huì)去把請(qǐng)求丟給后端去做查詢,如果我們做了高可用群集,這時(shí)候一旦一臺(tái)后端壞了,那么前端還可以繼續(xù)使用另外一臺(tái)后端進(jìn)行查詢,保證用戶可以正常查詢?cè)L問(wèn)。


? 這里的關(guān)鍵點(diǎn)在于,高可用群集,通常是用于后端,例如數(shù)據(jù)庫(kù)群集,虛擬化群集,應(yīng)用程序群集等有狀態(tài)運(yùn)行的服務(wù),當(dāng)發(fā)生故障時(shí),需要將宕機(jī)服務(wù)器上面運(yùn)作的內(nèi)容轉(zhuǎn)移至其它活著的服務(wù)器上繼續(xù)運(yùn)行。既然要做這種轉(zhuǎn)移,那么數(shù)據(jù)庫(kù)本身的實(shí)體,應(yīng)該存在哪里呢,通常情況下,高可用性群集里面數(shù)據(jù)庫(kù)一般會(huì)存在于共享的存儲(chǔ)中,即所有群集內(nèi)服務(wù)器都可以訪問(wèn)到的存儲(chǔ),這樣當(dāng)切換時(shí),就不需要實(shí)際上把數(shù)據(jù)庫(kù)拷貝轉(zhuǎn)移過(guò)去,真正轉(zhuǎn)移的,只是承擔(dān)數(shù)據(jù)庫(kù)查詢服務(wù)器的這個(gè)角色,從而大大減少了轉(zhuǎn)移所需要花費(fèi)的時(shí)間,還有一種場(chǎng)景是所有群集內(nèi)服務(wù)器數(shù)據(jù)庫(kù)內(nèi)容都存放在節(jié)點(diǎn)本機(jī),然后節(jié)點(diǎn)間相互做存儲(chǔ)的復(fù)制也是可以的。


? 還有個(gè)關(guān)鍵內(nèi)容,剛才我們說(shuō)過(guò)群集給人的感覺就好像是一個(gè)整體的計(jì)算機(jī)在提供服務(wù),那么用戶或者是前端程序是怎么感應(yīng)到后端的群集的呢,通常情況下,不論是高可用群集,負(fù)載均衡群集,還是高性能群集,都會(huì)提供一個(gè)群集化的管理名稱,例如,當(dāng)我們從前端去查詢到后端服務(wù)器的時(shí)候,實(shí)際上我們是查的群集管理名稱,而不是去查單一的數(shù)據(jù)庫(kù)服務(wù)器名稱,群集會(huì)幫我們和其中的節(jié)點(diǎn)建立聯(lián)系,這樣連接到群集化的管理名稱后,當(dāng)群集內(nèi)的服務(wù)器出現(xiàn)故障,群集會(huì)自己去根據(jù)情況做出處理相應(yīng),重新挑選合適的節(jié)點(diǎn)提供服務(wù),對(duì)于使用方來(lái)說(shuō)是不會(huì)過(guò)多的感知的,前端或者用戶始終是訪問(wèn)同一個(gè)群集名稱。


這里我們說(shuō)了高可用群集的幾個(gè)特征,希望大家記住


1.高可用群集通常用于后端程序,例如數(shù)據(jù)庫(kù),虛擬化主機(jī)

2.高可用群集通常情況下所有群集內(nèi)服務(wù)器都訪問(wèn)了共享存儲(chǔ),便于發(fā)生故障快速轉(zhuǎn)移

3.高可用群集提供統(tǒng)一對(duì)外的群集化管理名稱

4.高可用群集主要用于提供有狀態(tài)服務(wù)的持續(xù)運(yùn)行,確保單臺(tái)后端節(jié)點(diǎn)宕機(jī)不會(huì)影響業(yè)務(wù),可以提供故障轉(zhuǎn)移機(jī)制


除了以上四點(diǎn),通常情況下高可用群集還應(yīng)該具備以下幾個(gè)特點(diǎn)


1.高可用群集應(yīng)該具備心跳檢測(cè)機(jī)制,即群集,群集節(jié)點(diǎn)間,應(yīng)該可以通過(guò)某種機(jī)制,得知對(duì)方是否存活,通常情況下群集系統(tǒng)會(huì)將次實(shí)現(xiàn)為ping檢測(cè),實(shí)際旳握手檢測(cè),或基于給定的API檢測(cè)


2.高可用群集中各個(gè)節(jié)點(diǎn)通常可以感應(yīng)到群集內(nèi)各個(gè)節(jié)點(diǎn)當(dāng)前承擔(dān)的群集角色,以便發(fā)生故障時(shí)可以進(jìn)行轉(zhuǎn)移


3.高可用性群集中各個(gè)節(jié)點(diǎn)通常可以感應(yīng)到群集內(nèi)節(jié)點(diǎn)的新增,添加,刪除,上線,下線等狀態(tài)。


4.高可用群集通常群集自身,以及各節(jié)點(diǎn)應(yīng)該具備自身健康監(jiān)測(cè),通常實(shí)現(xiàn)為一種類似于投票的機(jī)制,每個(gè)節(jié)點(diǎn)確保自己是健康的情況下可以發(fā)出一個(gè)聲明(投票),讓群集知道我當(dāng)前是可以提供群集功能的節(jié)點(diǎn),當(dāng)整個(gè)群集內(nèi)如果不健康,即未能投票的節(jié)點(diǎn)(也可能是節(jié)點(diǎn)+見證) 達(dá)到一定數(shù)量時(shí),即會(huì)判定整個(gè)群集當(dāng)前不健康,不能正常提供群集工作,會(huì)出現(xiàn)停止提供服務(wù),或暫停等狀態(tài)


以上為關(guān)于高可用性群集的簡(jiǎn)單介紹,及特征描述,在文章后面部分我會(huì)為大家進(jìn)行多次舉例,幫助大家理解高可用群集的概念



高可用群集常見的名詞解釋:


節(jié)點(diǎn):通常指群集內(nèi)參與協(xié)作工作的單個(gè)服務(wù)器


群集應(yīng)用:通常是指運(yùn)行在一個(gè)已經(jīng)實(shí)現(xiàn)了高可用性機(jī)制的群集上的應(yīng)用,群集會(huì)通過(guò)相應(yīng)的的檢測(cè)機(jī)制確保應(yīng)用的健康狀態(tài),通常群集應(yīng)用會(huì)被托管運(yùn)行在群集中的單個(gè)節(jié)點(diǎn)上,當(dāng)該節(jié)點(diǎn)出現(xiàn)故障時(shí),群集會(huì)將群集應(yīng)用轉(zhuǎn)移至其它活著的節(jié)點(diǎn)上繼續(xù)運(yùn)行,保證群集應(yīng)用一直是可用的。


群集磁盤:通常是指高可用性群集內(nèi)已經(jīng)實(shí)現(xiàn)為可以被群集內(nèi)服務(wù)器共同訪問(wèn)的共享磁盤,通常情況下在某一時(shí)刻單塊群集磁盤會(huì)被掛載上線在群集中的單個(gè)節(jié)點(diǎn)上


故障轉(zhuǎn)移群集:通常描述為一種高可用性群集類型,通常故障轉(zhuǎn)移群集指同一時(shí)刻群集內(nèi)只有一臺(tái)節(jié)點(diǎn)提供群集應(yīng)用的訪問(wèn)服務(wù),當(dāng)這臺(tái)服務(wù)器出現(xiàn)故障時(shí),群集系統(tǒng)可以快速做出反應(yīng),將故障節(jié)點(diǎn)上面承載的群集應(yīng)用轉(zhuǎn)移至其它活著的節(jié)點(diǎn)提供服務(wù)。


計(jì)劃內(nèi)停機(jī)時(shí)間:已經(jīng)可以被預(yù)見,被預(yù)料的正常停機(jī)時(shí)間,例如群集服務(wù)器進(jìn)行計(jì)劃性的補(bǔ)丁修復(fù),網(wǎng)絡(luò)切換,服務(wù)器升級(jí)等,通常計(jì)劃內(nèi)停機(jī)時(shí)間對(duì)于業(yè)務(wù)來(lái)說(shuō)是在可以被接受的范圍,可以在已知情況下利用實(shí)時(shí)遷移,在線轉(zhuǎn)移等技術(shù)完成轉(zhuǎn)移,最小化停機(jī)時(shí)間,順利完成計(jì)劃內(nèi)的維護(hù)工作


計(jì)劃外停機(jī)時(shí)間:不可被預(yù)見的,忽然發(fā)生的災(zāi)難性停機(jī),例如在不知情的情況下服務(wù)器電源壞掉,硬盤不可訪問(wèn),造成業(yè)務(wù)層面不可訪問(wèn),是較為嚴(yán)重的,通常情況下企業(yè)會(huì)實(shí)現(xiàn)例如高可用性群集,或者災(zāi)難備份來(lái)應(yīng)對(duì)計(jì)劃外停機(jī)事件發(fā)生,通常情況下SLA的計(jì)算,真正會(huì)被承認(rèn)宕機(jī)時(shí)間的也就是說(shuō)的這段計(jì)劃外的停機(jī)事件


群集管理名稱:群集對(duì)外的一個(gè)集中的,邏輯的名稱,該名稱在域范圍,解析范圍內(nèi)應(yīng)該是唯一的,不可重復(fù)的,前端程序或者用戶訪問(wèn)群集始終是訪問(wèn)的群集管理名稱,也可以叫做群集對(duì)外名稱,通常情況下,如果在高可用性群集里面實(shí)現(xiàn)基于群集的高可用的應(yīng)用,也會(huì)有單獨(dú)的虛擬應(yīng)用名稱,這個(gè)名稱應(yīng)該是基于群集管理名稱創(chuàng)建出來(lái)的,或依附于群集管理名稱,群集管理名稱會(huì)提供的是一個(gè)邏輯的訪問(wèn)域名,或一個(gè)群集的IP地址,群集管理名稱或群集IP地址通常會(huì)綁定在活著的一個(gè)群集節(jié)點(diǎn)上,對(duì)于用戶和前端實(shí)現(xiàn)了邏輯屏蔽機(jī)制,前端只知道我去連接到這樣一個(gè)域名,但并不會(huì)知道群集內(nèi)有幾臺(tái)服務(wù)器在提供服務(wù)。


在高可用群集中通常又分為多種形態(tài),以從運(yùn)行模式和群集存儲(chǔ)模式為例


高可用群集的運(yùn)作模式通常又分為主從模式,互備模式,雙主模式


主從模式:也叫做AP模式(active-passive)同一時(shí)刻一個(gè)群集應(yīng)用只能在一個(gè)節(jié)點(diǎn)上運(yùn)行提供服務(wù),當(dāng)前端或用戶通過(guò)群集管理名稱訪問(wèn)時(shí)只會(huì)有一臺(tái)服務(wù)器提供服務(wù),這臺(tái)服務(wù)器扮演主服務(wù)器角色,其它服務(wù)器扮演備服務(wù)器角色,當(dāng)主服務(wù)器不可用時(shí),群集會(huì)感知到主服務(wù)器壞了,然后切換至其它備服務(wù)器繼續(xù)提供服務(wù)。


互備模式:這種模式,有人也叫它是AA模式,對(duì)此嘛老王也是持有保留意見的,說(shuō)它是雙活的,似乎也無(wú)可非議,但平常會(huì)需要浪費(fèi)掉一半的群集計(jì)算資源這個(gè)。。。舉個(gè)例子,如果是一套數(shù)據(jù)庫(kù)群集,是可以做到多個(gè)實(shí)例,兩個(gè)節(jié)點(diǎn)的話,比如節(jié)點(diǎn)一是實(shí)例一的主節(jié)點(diǎn),實(shí)例二的備節(jié)點(diǎn),節(jié)點(diǎn)2是實(shí)例1的備節(jié)點(diǎn),實(shí)例2的主節(jié)點(diǎn),這樣以多花費(fèi)一半的資源的代價(jià)下實(shí)現(xiàn)了兩個(gè)服務(wù)器都可以同時(shí)對(duì)外提供服務(wù),但是,一旦節(jié)點(diǎn)1這時(shí)候出現(xiàn)故障,節(jié)點(diǎn)2就需要承載兩個(gè)實(shí)例,要實(shí)現(xiàn)這種模式的高可用性群集,需要做好服務(wù)器的規(guī)劃,確保每臺(tái)服務(wù)器都是可以承載兩個(gè)實(shí)例的配置才行。


雙主模式:也叫做AA(active-active)模式,在老王看來(lái),真正的雙主,或者說(shuō)雙活A(yù)A模式群集,應(yīng)該是這樣的,例如在群集系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)負(fù)載均衡器機(jī)制,或者在群集系統(tǒng)前面再擺一個(gè)負(fù)載均衡器,真正的雙活模式,應(yīng)該是用戶訪問(wèn)時(shí)會(huì)通過(guò)負(fù)載均衡機(jī)制把用戶請(qǐng)求丟給群集里面一個(gè)節(jié)點(diǎn),下一個(gè)用戶訪問(wèn)又是另外一個(gè)節(jié)點(diǎn),這樣真正的節(jié)點(diǎn)同時(shí)對(duì)外提供服務(wù),老王認(rèn)為才是真正的AA模式,目前看起來(lái)MySQL上的Amoeba是這樣,微軟的SOFS也是這樣。


從群集存儲(chǔ)模式區(qū)分


通常情況下分為


共享磁盤模式


? ?即所有群集節(jié)點(diǎn)都訪問(wèn)共享的群集磁盤,群集應(yīng)用數(shù)據(jù)也寫入到共享磁盤中,通常情況下此架構(gòu)下實(shí)現(xiàn)為AP模式較多,缺點(diǎn)就是會(huì)對(duì)群集資源進(jìn)行浪費(fèi),同一時(shí)間只有一臺(tái)節(jié)點(diǎn)提供服務(wù),存儲(chǔ)是單一故障點(diǎn),需要考慮存儲(chǔ)的高可用,少數(shù)群集應(yīng)用可以實(shí)現(xiàn)共享磁盤模式下的雙活,例如oracle rac,可以在使用共享磁盤的情況下,負(fù)載均衡各個(gè)節(jié)點(diǎn)負(fù)載,讓多個(gè)節(jié)點(diǎn)同時(shí)對(duì)外提供服務(wù)。


無(wú)共享磁盤模式


? ?即所有每個(gè)群集節(jié)點(diǎn)都在節(jié)點(diǎn)本身寫入數(shù)據(jù)磁盤,不使用共享磁盤,但各節(jié)點(diǎn)之間可以進(jìn)行數(shù)據(jù)磁盤數(shù)據(jù)的同步,通常實(shí)現(xiàn)為主服務(wù)器和輔助服務(wù)器,主服務(wù)器提供讀寫服務(wù),輔助服務(wù)器從主服務(wù)器復(fù)制數(shù)據(jù)庫(kù),當(dāng)故障發(fā)生時(shí),通常可以執(zhí)行手動(dòng)故障轉(zhuǎn)移,或配合見證機(jī)制實(shí)現(xiàn)自動(dòng)故障切換,一些群集應(yīng)用也會(huì)提供輔助服務(wù)器的可讀功能,通常數(shù)據(jù)庫(kù)應(yīng)用中使用。


? ?有朋友看到這里可能會(huì)問(wèn),有必要嗎,企業(yè)有必要做這種高可用性群集嗎,這東西涉及到這么多概念,其實(shí)真的很有必要,設(shè)想一下,一個(gè)云盤網(wǎng)站,或者一個(gè)購(gòu)物網(wǎng)站,肯定是希望24小時(shí)能夠正常提供服務(wù)的,一旦沒(méi)有實(shí)現(xiàn)高可用群集,那網(wǎng)站后臺(tái)只有一臺(tái)服務(wù)器,這臺(tái)服務(wù)器壞了,所有客戶都將無(wú)法訪問(wèn)購(gòu)物網(wǎng)站或者云盤網(wǎng)站,這對(duì)于運(yùn)營(yíng)商來(lái)說(shuō)是災(zāi)難性的,會(huì)導(dǎo)致業(yè)務(wù)損失,喪失用戶對(duì)你網(wǎng)站的信心,因此,老王認(rèn)為凡是成熟的商業(yè)網(wǎng)站,都應(yīng)該實(shí)施高可用群集,來(lái)保證可以持續(xù)提供服務(wù),即使沒(méi)有條件實(shí)施高可用群集,也應(yīng)該實(shí)施備份恢復(fù)等機(jī)制。



接下來(lái)負(fù)載均衡群集


? ?這類群集很好理解,我們上面講了高可用群集,或者說(shuō)是故障轉(zhuǎn)移群集,主要強(qiáng)調(diào)的是,群集應(yīng)用同一時(shí)間只在一個(gè)節(jié)點(diǎn)上運(yùn)行,同時(shí)會(huì)讀取寫入內(nèi)容到共享磁盤,檢測(cè)到一臺(tái)節(jié)點(diǎn)宕機(jī),群集會(huì)把角色服務(wù)等有狀態(tài)的內(nèi)容轉(zhuǎn)移至另外一個(gè)節(jié)點(diǎn)上繼續(xù)運(yùn)行。負(fù)載均衡群集主要倡導(dǎo)的概念和故障轉(zhuǎn)移群集有所不同,在負(fù)載均衡群集中,通常各節(jié)點(diǎn)間都是無(wú)狀態(tài)的,也并沒(méi)有共享磁盤,發(fā)生故障時(shí)候也不用把自身承載的內(nèi)容轉(zhuǎn)移給其它節(jié)點(diǎn),因?yàn)樵谪?fù)載均衡群集中,每個(gè)節(jié)點(diǎn)的內(nèi)容都是一致的,冗余的,負(fù)載均衡群集只是提供一個(gè)均衡機(jī)制,可以確保用戶的訪問(wèn)請(qǐng)求,會(huì)在不同的,具備相同冗余內(nèi)容的節(jié)點(diǎn)上進(jìn)行負(fù)載均衡,當(dāng)其中一個(gè)節(jié)點(diǎn)不可用,負(fù)載均衡群集直接自動(dòng)路由到其它可用的節(jié)點(diǎn)上繼續(xù)為用戶提供服務(wù)。


? ?負(fù)載均衡群集,通常也叫做前端群集,它與故障轉(zhuǎn)移群集的相同點(diǎn)是他們都提供一個(gè)對(duì)外的群集訪問(wèn)名稱,當(dāng)用戶訪問(wèn)一個(gè)負(fù)載均衡群集時(shí),感覺上就好像是在訪問(wèn)一臺(tái)服務(wù)器一樣,但其實(shí)負(fù)載均衡會(huì)根據(jù)算法去負(fù)載均衡,讓不同用戶訪問(wèn)到不同的服務(wù)器上。不同點(diǎn)在于,故障轉(zhuǎn)移群集需要進(jìn)行故障轉(zhuǎn)移,當(dāng)檢測(cè)到一個(gè)節(jié)點(diǎn)宕機(jī),其它節(jié)點(diǎn)會(huì)檢查群集數(shù)據(jù)庫(kù),查詢宕機(jī)節(jié)點(diǎn)承載服務(wù),然后進(jìn)行上線。負(fù)載均衡群集則不會(huì)發(fā)生這種故障轉(zhuǎn)移過(guò)程,因?yàn)樨?fù)載均衡群集提倡的是無(wú)狀態(tài)的,每個(gè)節(jié)點(diǎn)上的資源都是一樣的,一個(gè)節(jié)點(diǎn)宕機(jī),直接負(fù)載均衡至其它節(jié)點(diǎn)上,并不會(huì)產(chǎn)生離線上線角色轉(zhuǎn)移等事情。


? ?因此負(fù)載均衡群集特別適合于像是Web前端這樣的應(yīng)用,通過(guò)負(fù)載均衡讓每個(gè)節(jié)點(diǎn)都提供服務(wù),最大化利用群集資源,在某些程度上也可以提供Web前端的處理能力


? 負(fù)載均衡群集系統(tǒng)通常具備以下特點(diǎn)


1.負(fù)載均衡群集系統(tǒng)通常可以設(shè)定基于IP、端口等進(jìn)行負(fù)載調(diào)度分發(fā)

2.負(fù)載均衡群集系統(tǒng)通常可以設(shè)定群集各節(jié)點(diǎn)負(fù)載均衡的比例,例如可以指定節(jié)點(diǎn)1承載60%的請(qǐng)求,節(jié)點(diǎn)20承載40%的請(qǐng)求

3.負(fù)載均衡群集系統(tǒng)通常可以設(shè)定優(yōu)先級(jí),可以根據(jù)優(yōu)先等級(jí)進(jìn)行調(diào)度,排隊(duì),丟棄,分配。

4.負(fù)載均衡群集系統(tǒng)通常可以基于上下文感知,例如根據(jù)不同的請(qǐng)求內(nèi)容,分配到不同的節(jié)點(diǎn)服務(wù)器。

5.負(fù)載均衡群集系統(tǒng)通常也需要心跳檢測(cè)機(jī)制,確保每次挑選出來(lái)提供負(fù)載均衡服務(wù)的機(jī)器都是健康可用的,負(fù)載均衡系統(tǒng)需要知道群集內(nèi)節(jié)點(diǎn)的存活狀態(tài),當(dāng)其中一個(gè)節(jié)點(diǎn)不可用時(shí),下次群集將不會(huì)將負(fù)載均衡請(qǐng)求丟至該節(jié)點(diǎn),通常實(shí)現(xiàn)為ping檢測(cè),或?qū)嶋H的路徑網(wǎng)頁(yè)訪問(wèn)檢測(cè)。


? 通常情況常見負(fù)載均衡群集有微軟的NLB,ARR,linux下面的LVS、HAProxy、Nginx等解決方案


? 還有一種最簡(jiǎn)單的負(fù)載均衡群集實(shí)現(xiàn)方式,DNS輪詢,其實(shí)嚴(yán)格來(lái)講老王認(rèn)為這只是種簡(jiǎn)單的輪詢技術(shù),并不能稱得上是負(fù)載均衡或者群集


? ?DNS輪詢做的,只是將同一個(gè)域名的訪問(wèn)解析到不同的服務(wù)器上,但是解析負(fù)載并不是均衡的,也并不是可控的,當(dāng)其中一個(gè)節(jié)點(diǎn)宕機(jī),DNS輪詢還會(huì)繼續(xù)輪詢到該地址,并不具備檢測(cè)機(jī)制,而且DNS通常還具備緩存機(jī)制,例如當(dāng)前域名解析到的服務(wù)器出現(xiàn)故障,你重新分配至其它服務(wù)器,但客戶端也并不會(huì)立刻可用,除非等到DNS緩存超時(shí)


? ?因此DNS輪詢系統(tǒng)通常用于最簡(jiǎn)單,對(duì)于負(fù)載均衡,故障轉(zhuǎn)移沒(méi)有過(guò)多要求的Web前端服務(wù)器,通常情況下使用DNS輪詢系統(tǒng)并不會(huì)單獨(dú)使用它,而是會(huì)配合nginx,arr,LVS等負(fù)載均衡群集技術(shù)一起實(shí)現(xiàn)。


? ?當(dāng)我們實(shí)現(xiàn)了負(fù)載均衡之后,假設(shè)現(xiàn)在是三個(gè)節(jié)點(diǎn)的一個(gè)負(fù)載均衡群集,提供一個(gè)群集訪問(wèn)名稱進(jìn)行訪問(wèn),每次用戶發(fā)起訪問(wèn),負(fù)載均衡群集會(huì)根據(jù)綜合調(diào)度策略,優(yōu)先級(jí),上下文等算法選出一臺(tái)合適的節(jié)點(diǎn)來(lái)提供服務(wù),這時(shí)候如果當(dāng)這臺(tái)節(jié)點(diǎn)壞掉,或者用戶被負(fù)載均衡到了其它節(jié)點(diǎn)上,那么用戶session如何處理是個(gè)問(wèn)題,例如當(dāng)前負(fù)載均衡群集是個(gè)購(gòu)物網(wǎng)站,用戶正在購(gòu)買東西添加至購(gòu)物車,這時(shí)候忽然節(jié)點(diǎn)1出現(xiàn)故障,負(fù)載均衡會(huì)自動(dòng)切換到節(jié)點(diǎn)2提供服務(wù),但是,之前用戶已經(jīng)與節(jié)點(diǎn)1建立了session狀態(tài)鏈接,即用戶的登陸信息,會(huì)話信息,雖然說(shuō)負(fù)載均衡群集可以切換到其它節(jié)點(diǎn)繼續(xù)提供服務(wù),但是之前在節(jié)點(diǎn)1建立的session則會(huì)丟失,即是說(shuō),這時(shí)候一旦節(jié)點(diǎn)1壞了,切換到節(jié)點(diǎn)2,需要用戶重新登錄才可以,頻繁需要重新登錄這對(duì)于用戶來(lái)說(shuō)是不可接受的,特別是對(duì)于一些嚴(yán)重依賴于session的網(wǎng)站


? ?因此實(shí)現(xiàn)了負(fù)載均衡群集之后,session存在哪里是個(gè)問(wèn)題,是使用session保持技術(shù),還是將session存在數(shù)據(jù)庫(kù),或單獨(dú)實(shí)現(xiàn)session server是值得思考的問(wèn)題。


? ?簡(jiǎn)單總結(jié)下,高可用群集通常指的是后端群集,當(dāng)發(fā)生故障時(shí),會(huì)發(fā)生實(shí)際的故障轉(zhuǎn)移,將被宕機(jī)節(jié)點(diǎn)上已有的群集應(yīng)用,群集資源等有狀態(tài)性的資源服務(wù),轉(zhuǎn)移至其它活著的節(jié)點(diǎn)上繼續(xù)運(yùn)行。


? ?負(fù)載均衡群集通常是指的前端群集,部署多個(gè)內(nèi)容一致的無(wú)狀態(tài)服務(wù)器,負(fù)載均衡群集根據(jù)綜合算法,將每次用戶的請(qǐng)求轉(zhuǎn)發(fā)至不同的合適的節(jié)點(diǎn)上進(jìn)行工作,并不會(huì)發(fā)生有狀態(tài)的故障轉(zhuǎn)移,單臺(tái)節(jié)點(diǎn)下線,負(fù)載均衡只是自動(dòng)轉(zhuǎn)發(fā)請(qǐng)求到其它節(jié)點(diǎn)上。


? ?在講高性能計(jì)算群集之前,老王想先和大家談?wù)劮植际?#xff0c;以及分布式和群集的區(qū)別


? ?在老王看來(lái),分布式主要強(qiáng)調(diào)的更多的是一種對(duì)于應(yīng)用處理實(shí)現(xiàn)的一種思維,算法的實(shí)現(xiàn)方式,分布式更多的時(shí)候指的是把一項(xiàng)工作,分?jǐn)偝啥鄠€(gè)小任務(wù),交給不同的節(jié)點(diǎn)去處理,然后把多個(gè)節(jié)點(diǎn)處理的結(jié)果最終匯集出成果,分布式中的節(jié)點(diǎn)不同于群集,一個(gè)分布式節(jié)點(diǎn)可以是群集,也可以是單機(jī),分布式的核心思維是利用多個(gè)節(jié)點(diǎn)分?jǐn)倎?lái)完成工作,每個(gè)節(jié)點(diǎn)完成的任務(wù)都是不一樣的,以眾人合力來(lái)達(dá)成同一個(gè)目標(biāo),老王認(rèn)為這就是分布式的思想。


? ?而群集的概念相對(duì)來(lái)說(shuō),主要是指將一組服務(wù)器結(jié)合在一起共同協(xié)作,群集主要強(qiáng)調(diào)的是,我們來(lái)共同維護(hù)這一件工作,保證這項(xiàng)工作始終是可以正常對(duì)外提供服務(wù)的,強(qiáng)調(diào)的是集中維護(hù)一件事,確保單一工作的持續(xù)可用或均衡負(fù)載。

? ?

? ?例如一家蛋糕店,要賣蛋糕,群集是為了確保賣蛋糕這件事始終是可以正常運(yùn)行的,例如如果是群集的思維,可能是正常情況下一個(gè)服務(wù)員賣蛋糕,這個(gè)服務(wù)員生病了,其它服務(wù)員立刻接受她的工作繼續(xù)賣蛋糕,這里我們把服務(wù)員形成了一個(gè)群集,賣蛋糕就是個(gè)群集對(duì)外訪問(wèn)名稱,他們共同完成賣蛋糕這一件事,群集還可能是開了多個(gè)窗口,有兩個(gè)服務(wù)員一起買蛋糕,這就是群集中所說(shuō)的雙活模式。


? ?不論是負(fù)載均衡群集和高可用群集,它們強(qiáng)調(diào)的概念都是利用多臺(tái)計(jì)算機(jī)做好同樣的一件事,這里關(guān)鍵的點(diǎn)在于,群集的概念中比較看重一致性,例如負(fù)載均衡群集,集中對(duì)外提供訪問(wèn),但每臺(tái)機(jī)器必須內(nèi)容是一致的,故障轉(zhuǎn)移集群,必須確保每臺(tái)機(jī)器都能知道對(duì)方正在運(yùn)行的負(fù)載,發(fā)生故障時(shí)必須一致的把原節(jié)點(diǎn)承載的應(yīng)用進(jìn)行上線。

? ?

? ?分布式這個(gè)詞通常用于,分布式算法,分布式計(jì)算等詞語(yǔ),通常它們指的都是通過(guò)一種,將一項(xiàng)工作,分解成多個(gè)小任務(wù)同時(shí)執(zhí)行,然后利用多個(gè)節(jié)點(diǎn)的能力,匯集起來(lái)完成整體的目標(biāo),例如賣蛋糕這個(gè)例子,分布式的思維,強(qiáng)調(diào)的就是把賣蛋糕分解成多個(gè)步驟,例如1個(gè)服務(wù)員負(fù)責(zé)給客戶裝袋子,一個(gè)服務(wù)員負(fù)責(zé)給客戶取蛋糕,兩個(gè)服務(wù)員共同完成了賣蛋糕這件事。


? ?所謂的分布式群集,在老王看來(lái),也是一種分布式技術(shù)和群集技術(shù)的整合,能夠?qū)崿F(xiàn)這種技術(shù),前提要求群集必須要能夠支持識(shí)別這種分布式技術(shù),然后分布式技術(shù)利用多個(gè)服務(wù)器組合起來(lái)形成的群集技術(shù)來(lái)完成分布式的計(jì)算。

??

? ?通過(guò)上述解釋相信大家可以看懂,群集主要強(qiáng)調(diào)的是把一組計(jì)算機(jī)組合起來(lái)協(xié)作工作,共同對(duì)外提供服務(wù)的能力,大家共同確保一件事的正常運(yùn)行,或多個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)都運(yùn)行同一件事的能力。?


? ?分布式主要強(qiáng)調(diào)的是將一件事分?jǐn)偝啥鄠€(gè)不同的小事,利用多個(gè)節(jié)點(diǎn)處理的能力來(lái)有效率的共同完成大目標(biāo),實(shí)務(wù)應(yīng)用中,通常情況下,分布式多用于像是科研探索,工業(yè)計(jì)算,大數(shù)據(jù)等領(lǐng)域,將真正復(fù)雜的事情,單臺(tái)服務(wù)器上執(zhí)行效率低的事情,分?jǐn)偟蕉嗯_(tái)服務(wù)器,利用多臺(tái)服務(wù)器的計(jì)算能力來(lái)共同完成這一件事。


? ?分布式計(jì)算技術(shù)也經(jīng)常被一些國(guó)際科研組織使用,通過(guò)我們每個(gè)人共享自己電腦閑時(shí)的運(yùn)算能力,進(jìn)行分布式運(yùn)算,完成后再把計(jì)算結(jié)果通過(guò)網(wǎng)絡(luò)發(fā)送回服務(wù)器,這樣的計(jì)算方式可以幫助一些進(jìn)行大型計(jì)算研究的機(jī)構(gòu)加速進(jìn)步的速度。


? ?說(shuō)到分布式計(jì)算,不得不提并行計(jì)算和串行計(jì)算,通常情況下在并行計(jì)算和串行計(jì)算都是指應(yīng)用程序運(yùn)行執(zhí)行的一種形態(tài),例如,并行則是說(shuō)單個(gè)應(yīng)用可以同時(shí)在單機(jī)多個(gè)CPU下面執(zhí)行,或者是指同一時(shí)間,多個(gè)節(jié)點(diǎn)同時(shí)處理運(yùn)算負(fù)載的能力。相對(duì)來(lái)說(shuō),串行計(jì)算則是指運(yùn)算過(guò)程必須按照順序執(zhí)行,只有運(yùn)行完整個(gè)job才可執(zhí)行下一個(gè)。并行計(jì)算則是多個(gè)節(jié)點(diǎn)同時(shí)運(yùn)行多個(gè)job,不需要等待前一個(gè)完成再進(jìn)行計(jì)算


? ?如果一個(gè)計(jì)算是串行工作的,即使它是在群集上跑的,也不是并行計(jì)算


? ?相對(duì)來(lái)說(shuō),老王認(rèn)為分布式計(jì)算與并行計(jì)算差不太多,首先它們都對(duì)計(jì)算節(jié)點(diǎn)沒(méi)有過(guò)多的要求,節(jié)點(diǎn)服務(wù)器不必一定要使用專用的高級(jí)服務(wù)器,正常的商用服務(wù)器或者工作站都可以完成分布式計(jì)算,大體強(qiáng)調(diào)的都是將一項(xiàng)復(fù)雜的工作,分成多個(gè)子任務(wù),然后節(jié)點(diǎn)執(zhí)行完成后匯集起來(lái)形成結(jié)果。


? ?通常情況下,分布式計(jì)算更加適用于在計(jì)算尋找模式的東西,分析計(jì)算,相加計(jì)算等。分布式的計(jì)算被分解后的小任務(wù)互相之間有獨(dú)立性,節(jié)點(diǎn)之間的結(jié)果幾乎不互相影響,實(shí)時(shí)性要求不高,比較松散化。


? ?并行計(jì)算則比較傾向于一些海量數(shù)據(jù)進(jìn)行分析處理的場(chǎng)合,每個(gè)節(jié)點(diǎn)的每一個(gè)任務(wù)塊都是必要的,計(jì)算的結(jié)果相互影響,要求每個(gè)節(jié)點(diǎn)的計(jì)算結(jié)果要絕對(duì)正確,并且在時(shí)間上做到同步



? ?解釋完了分布式之后,我們回過(guò)頭來(lái)看下高性能計(jì)算集群,也可以說(shuō)是高性能計(jì)算

? ?

? ?我們先來(lái)看看群集的關(guān)注點(diǎn)


? ?高可用群集更關(guān)注的是我這個(gè)群集對(duì)外提供的正常可用時(shí)間有沒(méi)有達(dá)到幾個(gè)九


? ?負(fù)載均衡群集群集更關(guān)注的是我這個(gè)負(fù)載均衡群集可以同時(shí)支持的訪問(wèn)數(shù)量,以及節(jié)點(diǎn)的負(fù)載情況是否符合預(yù)期


? ?高性能群集,則更加關(guān)注群集整體的計(jì)算性能,群集到底每秒能處理多少數(shù)據(jù),群集處理數(shù)據(jù)的速度可以達(dá)到多塊,老王認(rèn)為高性能群集是個(gè)大的概念,它的目的是要群集獲取最快最高的計(jì)算能力,因此,一個(gè)高性能計(jì)算,可以能會(huì)包括分布式的job調(diào)度,并行運(yùn)行的能力,也可能會(huì)結(jié)合負(fù)載均衡,故障轉(zhuǎn)移等機(jī)制,確保計(jì)算能力的持續(xù)可用


? ?和我們前面說(shuō)的不同,高性能群集通常會(huì)采用專用的操作系統(tǒng),專用的高端服務(wù)器,和我們平時(shí)用的普通商用服務(wù)器不同,高性能服務(wù)器通常會(huì)具備很多顆CPU,巨大的內(nèi)存,高性能服務(wù)器之間通常會(huì)使用最新最快最可靠的網(wǎng)絡(luò)技術(shù),例如InfiniBand的網(wǎng)絡(luò)互連,單個(gè)高性能服務(wù)器硬件的處理性能在高性能計(jì)算中很重要,除了硬件外,通常高性能計(jì)算會(huì)通過(guò)專用的系統(tǒng)進(jìn)行管理控制,在管理過(guò)程中,可以把整個(gè)高性能群集的計(jì)算能力集中進(jìn)行分配處理,最終提供整個(gè)高性能群集計(jì)算能力。


? 通常情況下高性能計(jì)算群集更多的會(huì)被應(yīng)用于數(shù)學(xué),工業(yè),科研領(lǐng)域等,需要在短時(shí)間內(nèi)處理多維度的計(jì)算,這時(shí)候可以利用高性能計(jì)算群集的能力,來(lái)完成復(fù)雜的科學(xué)計(jì)算。


? 像是這些年除了高性能計(jì)算群集,也聽到有人提過(guò)超算,我們國(guó)家的神威,天河1號(hào),天河2號(hào)等等,實(shí)際上老王老王認(rèn)為高性能計(jì)算和超算差不多,都是為了提供最高的性能和最快的處理能力,最早期的超算,通常指的是單一的大型機(jī)器,高速度,大容量,具備特殊的CPU內(nèi)存,當(dāng)時(shí)最早有美國(guó)ILLIAC-IV,歐洲尤金,中國(guó)銀河等等,最早的超級(jí)計(jì)算機(jī)只能用于政府,能源軍方,航天等,只有很少數(shù)的人可以用到,后來(lái)隨著信息化的逐漸發(fā)展,一些企業(yè)也有了需要用到超算能力的需求,怎么辦,于是后來(lái)開始提出做群集把,我們通過(guò)把一些高性能服務(wù)器通過(guò)高速網(wǎng)絡(luò)鏈接起來(lái)形成群集,然后群集利用每個(gè)節(jié)點(diǎn)的能力綜合起來(lái)提供整體運(yùn)算能力吧,于是后來(lái)開始有很多廠商推出這種高性能群集,將原來(lái)超級(jí)計(jì)算機(jī)一個(gè)龐然大物的運(yùn)算能力,由多個(gè)節(jié)點(diǎn)結(jié)合起來(lái)實(shí)現(xiàn)。


? 甚至老王認(rèn)為我國(guó)的天河2號(hào)等超算,背后也是基于這種高性能群集技術(shù)實(shí)現(xiàn)的,將多臺(tái)配置性能極高的節(jié)點(diǎn)盡可能的靠近,綜合利用他們的運(yùn)算能力一起完成并行的運(yùn)算,如果說(shuō)差異的話,老王認(rèn)為能夠稱得上是超算的,通常規(guī)模會(huì)比普通的高性能計(jì)算大一些,定制化的硬件會(huì)更多,更加特定化,例如天河2號(hào)可能會(huì)使用特定的CPU,特定的內(nèi)存,以及特定的服務(wù)器架構(gòu),提供也運(yùn)算能力也更加強(qiáng)大。


案例總結(jié)


一個(gè)虛擬化群集,由多臺(tái)物理機(jī)組成,在群集中創(chuàng)建了虛擬機(jī),存放在共享磁盤中,當(dāng)檢測(cè)到一臺(tái)物理機(jī)宕機(jī),虛擬機(jī)會(huì)轉(zhuǎn)移到其它節(jié)點(diǎn)繼續(xù)運(yùn)行。這是高可用群集


一個(gè)數(shù)據(jù)庫(kù)群集,由多臺(tái)服務(wù)器組成,基于群集創(chuàng)建了數(shù)據(jù)庫(kù)的實(shí)例,數(shù)據(jù)庫(kù)內(nèi)容存放在共享磁盤中,當(dāng)檢測(cè)到一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器宕機(jī),數(shù)據(jù)庫(kù)服務(wù)器角色會(huì)轉(zhuǎn)移到其他節(jié)點(diǎn)繼續(xù)運(yùn)行。這是高可用群集


由多臺(tái)相同網(wǎng)站內(nèi)容的無(wú)狀態(tài)Web服務(wù)器組成,通過(guò)統(tǒng)一的域名訪問(wèn),所有節(jié)點(diǎn)輪詢對(duì)外提供訪問(wèn)服務(wù),一臺(tái)Web服務(wù)器下線,用戶自動(dòng)訪問(wèn)其他節(jié)點(diǎn),這是負(fù)載均衡群集。


國(guó)際某組織,要探索外星文明,發(fā)起活動(dòng)組織每個(gè)人可以將電腦空閑的運(yùn)算能力集中起來(lái),把探索任務(wù)細(xì)分到每個(gè)愿意提供運(yùn)算能力的電腦上面,將運(yùn)算結(jié)果執(zhí)行后返回給中央服務(wù)器,這是種分布式計(jì)算


某組織需要進(jìn)行每秒100萬(wàn)的運(yùn)算,需要并行處理多個(gè)維度的公式,將運(yùn)算程序丟給群集,群集快速完成返回運(yùn)算結(jié)果。這是種高性能計(jì)算。



以上為老王群集系列的開篇,雖然沒(méi)有像想象中那樣寫的盡善盡美,不過(guò)已經(jīng)用心了就好,希望會(huì)有朋友看到老王的這篇文章之后,能夠?qū)τ谝郧安焕斫獾膬?nèi)容多一點(diǎn)認(rèn)識(shí),那怕多理解了一點(diǎn)點(diǎn),老王也會(huì)很高興,嘛,就這樣,后續(xù)文章會(huì)都是偏技術(shù),實(shí)踐性的,下篇開始講為大家講解微軟高可用群集的仲裁模式,以及在2008R2 2012R2 2016不同版本中的運(yùn)作形態(tài)實(shí)踐。


轉(zhuǎn)載于:https://blog.51cto.com/wzde2012/1949622

總結(jié)

以上是生活随笔為你收集整理的浅谈群集与分布式基础知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。