LVS系列教程01-集群技術(shù)
前言
Linux 是一套免費(fèi)使用和自由傳播的類 Unix 操作系統(tǒng),是一個(gè)基于 POSIX 和 UNIX 的多用戶、多任務(wù)、支持多線程和多 CPU 的操作系統(tǒng)。嚴(yán)格來講,Linux 這個(gè)詞本身只表示 Linux 內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣了用 Linux 來形容整個(gè)基于 Linux 內(nèi)核,并且使用 GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。

一、集群概念
分布式: 是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來提升效率的
集群: 則是通過提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率
兩大關(guān)鍵特性
可擴(kuò)展性
集群的性能不限于單一的服務(wù)實(shí)體,新的服務(wù)實(shí)體可以動(dòng)態(tài)地加入到集群,從而增強(qiáng)集群的性能。
高可用性
集群通過服務(wù)實(shí)體冗余使客戶端免于輕易遇到out of service的警告。在集群中,同樣的服務(wù)可以由多個(gè)服務(wù)實(shí)體提供。如果一個(gè)服務(wù)實(shí)體失敗了,另一個(gè)服務(wù)實(shí)體會(huì)接管失敗的服務(wù)實(shí)體。集群提供的從一個(gè)出錯(cuò)的服務(wù)實(shí)體恢復(fù)到另一個(gè)服務(wù)實(shí)體的功能增強(qiáng)了應(yīng)用的可用性。
兩大能力
負(fù)載均衡
負(fù)載均衡能把任務(wù)比較均衡地分布到集群環(huán)境下的計(jì)算和網(wǎng)絡(luò)資源,從而減輕單臺(tái)機(jī)器的壓力。
錯(cuò)誤恢復(fù)
由于某種原因,執(zhí)行某個(gè)任務(wù)的資源出現(xiàn)故障,另一服務(wù)實(shí)體中執(zhí)行同一任務(wù)的資源接著完成任務(wù)。這種由于一個(gè)實(shí)體中的資源不能工作,另一個(gè)實(shí)體中的資源透明的繼續(xù)完成任務(wù)的過程叫錯(cuò)誤恢復(fù)。
兩大技術(shù)
集群地址
集群由多個(gè)服務(wù)實(shí)體組成,集群客戶端通過訪問集群的集群地址獲取集群內(nèi)部各服務(wù)實(shí)體的功能。具有單一集群地址是集群的一個(gè)基本特征,維護(hù)集群地址的設(shè)置被稱為負(fù)載均衡器。
負(fù)載均衡器內(nèi)部負(fù)責(zé)管理各個(gè)服務(wù)實(shí)體的加入和退出,外部負(fù)責(zé)集群地址向內(nèi)部服務(wù)實(shí)體地址的轉(zhuǎn)換。有的負(fù)載均衡器實(shí)現(xiàn)真正的負(fù)載均衡算法,有的只支持任務(wù)的轉(zhuǎn)換。
內(nèi)部通信
為了能協(xié)同工作、實(shí)現(xiàn)負(fù)載均衡和錯(cuò)誤恢復(fù),集群各實(shí)體間必須時(shí)常通信,比如負(fù)載均衡器對(duì)服務(wù)實(shí)體心跳測(cè)試信息、服務(wù)實(shí)體間任務(wù)執(zhí)行上下文信息的通信。
具有同一個(gè)集群地址使得客戶端能訪問集群提供的計(jì)算服務(wù),一個(gè)集群地址下隱藏了各個(gè)服務(wù)實(shí)體的內(nèi)部地址,使得客戶要求的計(jì)算服務(wù)能在各個(gè)服務(wù)實(shí)體之間分布。內(nèi)部通信是集群能正常運(yùn)轉(zhuǎn)的基礎(chǔ),它使得集群具有均衡負(fù)載和錯(cuò)誤恢復(fù)的能力。
二、集群分類
主要分成
(1)高可用集群(High Availability Cluster)
兩節(jié)點(diǎn)雙機(jī)熱備
多節(jié)點(diǎn)HA集群
heartbeat
keepalived
RAC集群
shared集群
share-nothing集群
(2)負(fù)載均衡集群(Load Balance Cluster)
LVS
Nginx Proxy
Haproxy
keepalived
F5
Netscaler
(3)高性能集群(High Performance Cluster)
Beowulf 集群
三、高可用集群

(1) 集群介紹
高可用集群是指以減少服務(wù)中斷時(shí)間為目的的服務(wù)器集群技術(shù),簡(jiǎn)單來說,集群就是一組計(jì)算機(jī),它們作為一個(gè)整體向用戶提供一組網(wǎng)絡(luò)資源。
只有兩個(gè)節(jié)點(diǎn)的高可用集群又稱為雙機(jī)熱備,即使用兩臺(tái)服務(wù)器互相備份。當(dāng)一臺(tái)服務(wù)器出現(xiàn)故障時(shí),可由另一臺(tái)服務(wù)器承擔(dān)服務(wù)任務(wù),從而在不需要人工干預(yù)的情況下,自動(dòng)保證系統(tǒng)能持續(xù)對(duì)外提供服務(wù)。雙機(jī)熱備只是高可用集群的一種,高可用集群系統(tǒng)更可以支持兩個(gè)以上的節(jié)點(diǎn),提供比雙機(jī)熱備更多、更高級(jí)的功能,更能滿足用戶不斷出現(xiàn)的需求變化。
(2) 集群分類
高吞吐計(jì)算(High-throughput Computing)
可以把它分成若干可以并行的子任務(wù),而且各個(gè)子任務(wù)彼此間沒有什么關(guān)聯(lián)。
分布計(jì)算(Distributed Computing)
雖然可以給分成若干并行的子任務(wù),但是子任務(wù)間聯(lián)系很緊密,需要大量的數(shù)據(jù)交換。
(3) 高可用標(biāo)準(zhǔn)

(4) 解決方案
Linux-HA 項(xiàng)目的 heartbeat 系統(tǒng)和相關(guān)的組件
RedHat 公司的開放源代碼 RHCS 系統(tǒng)及組件
四、負(fù)載均衡集群

(1) 集群介紹
負(fù)載均衡集群中所有的節(jié)點(diǎn)都處于活動(dòng)狀態(tài),它們分?jǐn)傁到y(tǒng)的工作負(fù)載。一般 Web 服務(wù)器集群、數(shù)據(jù)庫集群和應(yīng)用服務(wù)器集群都屬于這種類型。
這種集群可以在接到請(qǐng)求時(shí),檢查接受請(qǐng)求較少,不繁忙的服務(wù)器,并把請(qǐng)求轉(zhuǎn)到這些服務(wù)器上。從檢查其他服務(wù)器狀態(tài)這一點(diǎn)上看,負(fù)載均衡和容錯(cuò)集群很接近,不同之處是數(shù)量上更多。
(2) 網(wǎng)路層次
四層負(fù)載均衡
原理:第四層負(fù)載均衡將一個(gè)Internet上合法注冊(cè)的IP地址映射為多個(gè)內(nèi)部服務(wù)器的IP地址,對(duì)每次TCP連接請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部IP地址,達(dá)到負(fù)載均衡的目的。
應(yīng)用:在第四層交換機(jī)中,此種均衡技術(shù)得到廣泛的應(yīng)用,一個(gè)目標(biāo)地址是服務(wù)器群VIP(虛擬 IP)連接請(qǐng)求的數(shù)據(jù)包流經(jīng)交換機(jī),交換機(jī)根據(jù)源端和目的IP地址、TCP或UDP端口號(hào)和一定的負(fù)載均衡策略,在服務(wù)器IP和VIP間進(jìn)行映射,選取服務(wù)器群中最好的服務(wù)器來處理連接請(qǐng)求。
七層負(fù)載均衡
原理:第七層負(fù)載均衡控制應(yīng)用層服務(wù)的內(nèi)容,提供了一種對(duì)訪問流量的高層控制方式,適合對(duì)HTTP服務(wù)器群的應(yīng)用。第七層負(fù)載均衡技術(shù)通過檢查流經(jīng)的HTTP報(bào)頭,根據(jù)報(bào)頭內(nèi)的信息來執(zhí)行負(fù)載均衡任務(wù)。
優(yōu)點(diǎn)1:通過對(duì)HTTP報(bào)頭的檢查,可以檢測(cè)出400、500和600系列的錯(cuò)誤信息,因而能透明地將連接請(qǐng)求重新定向到另一臺(tái)服務(wù)器,避免應(yīng)用層故障。
優(yōu)點(diǎn)2:可根據(jù)流經(jīng)的數(shù)據(jù)類型(如判斷數(shù)據(jù)包是圖像文件、壓縮文件或多媒體文件格式等),把數(shù)據(jù)流量引向相應(yīng)內(nèi)容的服務(wù)器來處理,增加系統(tǒng)性能。
優(yōu)點(diǎn)3:能根據(jù)連接請(qǐng)求的類型,如是普通文本、圖像等靜態(tài)文檔請(qǐng)求,還是asp、cgi等的動(dòng)態(tài)文檔請(qǐng)求,把相應(yīng)的請(qǐng)求引向相應(yīng)的服務(wù)器來處理,提高系統(tǒng)的性能及安全性。
缺點(diǎn):第七層負(fù)載均衡受到其所支持的協(xié)議限制(一般只有HTTP),這樣就限制了它應(yīng)用的廣泛性,并且檢查HTTP報(bào)頭會(huì)占用大量的系統(tǒng)資源,勢(shì)必會(huì)影響到系統(tǒng)的性能,在大量連接請(qǐng)求的情況下,負(fù)載均衡設(shè)備自身容易成為網(wǎng)絡(luò)整體性能的瓶頸。
(3) 實(shí)現(xiàn)方式
(1)硬件(基本都是利用路由網(wǎng)關(guān))
F5
Array
Redware
特點(diǎn):價(jià)格昂貴;只從網(wǎng)絡(luò)層來判斷;適用于大訪問量;一般來說優(yōu)于軟件
(2)軟件(基本都是利用event模型)
LVS(性能高但用戶優(yōu)化不好)
Nginx
Haproxy(tcp 模型,并發(fā) 65535/2)
特點(diǎn):成本低廉;使用靈活且配置簡(jiǎn)單;可以滿足一般的負(fù)載均衡需求
(4) 常見應(yīng)用
DNS 負(fù)載均衡
最早的負(fù)載均衡技術(shù)是通過DNS來實(shí)現(xiàn)的,在DNS中為多個(gè)地址配置同一個(gè)名字,因而查詢這個(gè)名字的客戶機(jī)將得到其中一個(gè)地址,從而使得不同的客戶訪問不同的服務(wù)器,達(dá)到負(fù)載均衡的目的。
DNS負(fù)載均衡是一種簡(jiǎn)單而有效的方法,不同的客戶端訪問同一域名會(huì)得到不同的地址,經(jīng)常用在Web服務(wù)器,從而達(dá)到負(fù)載平衡的目的。
代理服務(wù)器負(fù)載均衡
可以將請(qǐng)求均勻的轉(zhuǎn)發(fā)給多臺(tái)內(nèi)部服務(wù)器,可以提升靜態(tài)網(wǎng)頁的訪問速度。
反向代理負(fù)載均衡
反向代理負(fù)載均衡技術(shù)是把將來自Internet上的連接請(qǐng)求以反向代理的方式動(dòng)態(tài)地轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的多臺(tái)服務(wù)器進(jìn)行處理,從而達(dá)到負(fù)載均衡的目的。
地址轉(zhuǎn)換網(wǎng)關(guān)負(fù)載均衡
支持負(fù)載均衡的地址轉(zhuǎn)換網(wǎng)關(guān),可以將一個(gè)外部IP地址映射為多個(gè)內(nèi)部IP地址,對(duì)每次TCP連接請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部地址,達(dá)到負(fù)載均衡的目的。
協(xié)議內(nèi)部支持負(fù)載均衡
有的協(xié)議內(nèi)部支持與負(fù)載均衡相關(guān)的功能,例如HTTP協(xié)議中的重定向能力等,HTTP運(yùn)行于TCP連接的最高層。
NAT 負(fù)載均衡
簡(jiǎn)單地說就是將一個(gè)IP地址轉(zhuǎn)換為另一個(gè)IP地址,一般用于未經(jīng)注冊(cè)的內(nèi)部地址與合法的、已獲注冊(cè)的Internet IP地址間進(jìn)行轉(zhuǎn)換。
適用于解決Internet IP地址緊張、不想讓網(wǎng)絡(luò)外部知道內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)等的場(chǎng)合下。
混合型負(fù)載均衡
在有些大型網(wǎng)絡(luò),由于多個(gè)服務(wù)器群內(nèi)硬件設(shè)備、各自的規(guī)模、提供的服務(wù)等的差異,可以考慮給每個(gè)服務(wù)器群采用最合適的負(fù)載均衡方式,然后又在這多個(gè)服務(wù)器群間再一次負(fù)載均衡或群集起來以一個(gè)整體向外界提供服務(wù),從而達(dá)到最佳的性能。
五、高性能集群
(1) 集群介紹
高性能計(jì)算群集在企業(yè)或個(gè)人很少會(huì)用到,是為了解決世界上最為復(fù)雜和艱巨的計(jì)算難題,并且能夠輕松處理。在氣象建模、模擬撞車試驗(yàn)、人體基因繪圖以及核爆炸模擬等多種與人類生命相關(guān)的重要領(lǐng)域都要用到 HPC。除政府、教育和國(guó)家實(shí)驗(yàn)室等公共部門之外,HPC 在制造、金融、能源、生命科學(xué)和數(shù)字媒體等行業(yè)都廣受青睞。
(2) 集群架構(gòu)
計(jì)算結(jié)點(diǎn):用于執(zhí)行用戶程序的結(jié)點(diǎn)服務(wù)器 存儲(chǔ)節(jié)點(diǎn):向系統(tǒng)中的其它節(jié)點(diǎn)提供存儲(chǔ)服務(wù)的服務(wù)器 監(jiān)控節(jié)點(diǎn):用來監(jiān)控系統(tǒng)各部分的運(yùn)行狀態(tài)、進(jìn)行遠(yuǎn)程電源管理和事件告警服務(wù)等工作 存儲(chǔ)交換網(wǎng)絡(luò):用來連接存儲(chǔ)節(jié)點(diǎn)和磁盤陣列 視頻切換系統(tǒng):可以在監(jiān)控臺(tái)上對(duì)結(jié)點(diǎn)進(jìn)行各種終端的操作 設(shè)備系統(tǒng)固件層:通信軟件和外部設(shè)備在適配器上的固件程序 結(jié)點(diǎn)系統(tǒng)軟件層:結(jié)點(diǎn)操作系統(tǒng)及其核心擴(kuò)展,如操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序、文件系統(tǒng)擴(kuò)展等 集群系統(tǒng)軟件層:集群?jiǎn)我挥诚蟮牟僮鞴芾碥浖?。包括集群管理系統(tǒng)、集群監(jiān)控系統(tǒng)、作業(yè)調(diào)度系統(tǒng)等 應(yīng)用支撐環(huán)境層:科學(xué)計(jì)算應(yīng)用的支撐平臺(tái)。如并行環(huán)境、數(shù)學(xué)庫、多核線程調(diào)試工具等 應(yīng)用程序?qū)樱嚎茖W(xué)工程計(jì)算類的實(shí)際應(yīng)用
文章作者: Escape
鏈接: https://escapelife.github.io/posts/52c24f7c.html
往期推薦
關(guān)注「開源Linux」加星標(biāo),提升IT技能

