服務(wù)器集群結(jié)構(gòu)中,又分為“不對(duì)稱集群”和“對(duì)稱集群”兩大類。“不對(duì)稱集群”結(jié)構(gòu)中有一些服務(wù)器專門用于當(dāng)工作服務(wù)器出現(xiàn)故障時(shí)接替它們的工作。在“對(duì)稱集群”結(jié)構(gòu)中,每個(gè)服務(wù)器都承擔(dān)有工作,每臺(tái)服務(wù)器都相互平等,沒有專門用于備用的服務(wù)器。如果一個(gè)服務(wù)器出現(xiàn)故障,其余服務(wù)器則會(huì)繼續(xù)處理其自身所分配的應(yīng)用程序組,同時(shí)處理發(fā)生故障的服務(wù)器上的應(yīng)用程序,具體由哪臺(tái)或哪幾臺(tái)服務(wù)器接管,要看集群服務(wù)配置了。
圖一 不對(duì)稱服務(wù)器集群結(jié)構(gòu)
圖二 對(duì)稱服務(wù)器集群結(jié)構(gòu)
集群技術(shù)和雙機(jī)熱備份技術(shù)的本質(zhì)區(qū)別體現(xiàn)在能否實(shí)現(xiàn)并行處理和節(jié)點(diǎn)失效后的任務(wù)平滑接管。雙機(jī)或多機(jī)備份技術(shù)的原理是一臺(tái)服務(wù)器作主機(jī),其他服務(wù)器作備份機(jī)(也可以同時(shí)工作),當(dāng)主機(jī)失效時(shí),備份機(jī)接管。集群系統(tǒng)使用的它的高可用性而不是容錯(cuò)。
服務(wù)器集群技術(shù)的優(yōu)勢(shì):①擴(kuò)展能力強(qiáng);②實(shí)現(xiàn)方面容易;③高可用性;④易管理性
對(duì)集群技術(shù)需求最迫切,發(fā)展也最快的領(lǐng)域主要有Web應(yīng)用、VOD應(yīng)用,科學(xué)計(jì)算、數(shù)據(jù)庫(kù)應(yīng)用等領(lǐng)域。集群服務(wù)不保證不停頓的操作,但它為大多數(shù)執(zhí)行關(guān)鍵任務(wù)的應(yīng)用程序提供了足夠的可靠性。
一、服務(wù)器集群:故障遷移解決方案
集群服務(wù)器設(shè)計(jì)的目的就是提高服務(wù)器性能,同時(shí)在出現(xiàn)故障時(shí)能及時(shí)進(jìn)行故障遷移(將應(yīng)用程序或服務(wù)安裝在發(fā)生故障時(shí)彼此能接管對(duì)方工作的多臺(tái)服務(wù)器上,一臺(tái)服務(wù)器接管發(fā)生故障服務(wù)器工作的過程就稱為“故障轉(zhuǎn)移”),提高服務(wù)器的可用性。所以在集服務(wù)器設(shè)計(jì)之初,必須充分考慮故障遷移方案。
故障遷移的原理
?、贆z測(cè)故障
要讓備用服務(wù)器變成活動(dòng)服務(wù)器,必須設(shè)法確定活動(dòng)服務(wù)器是否不再正常工作。系統(tǒng)使用下列某個(gè)常規(guī)類型的心跳機(jī)制來做到這一點(diǎn)?!虬l(fā)送信號(hào)。活動(dòng)服務(wù)器以定義好的時(shí)間間隔將指定信號(hào)發(fā)送到備用服務(wù)器。如果備用服務(wù)器在某個(gè)時(shí)間間隔內(nèi)未收到信號(hào),則確定活動(dòng)服務(wù)器發(fā)生故障并擔(dān)任活動(dòng)角色?!蚪邮招盘?hào)。備用服務(wù)器向活動(dòng)服務(wù)器發(fā)送請(qǐng)求。如果活動(dòng)服務(wù)器沒有響應(yīng),則備用服務(wù)器按特定次數(shù)重復(fù)發(fā)送此請(qǐng)求。如果活動(dòng)服務(wù)器仍然沒有響應(yīng),則備份服務(wù)器接管活動(dòng)服務(wù)器的工作。以上發(fā)送和接收信號(hào)是通過專用通信通道發(fā)送的,以使網(wǎng)絡(luò)擁塞和一般網(wǎng)絡(luò)問題不會(huì)導(dǎo)致假的故障轉(zhuǎn)移,這個(gè)專用通信通道通常被稱為“心跳線”。
②同步狀態(tài)
的集群服務(wù)器系統(tǒng)中,在正式接管活動(dòng)服務(wù)器的工件前,首先要將備用服務(wù)器的狀態(tài)與發(fā)生故障的服務(wù)器的狀態(tài)進(jìn)行同步,然后才能開始處理事務(wù)。主要有三種不同的同步方法?!蚴聞?wù)日志。在事務(wù)日志方法中,活動(dòng)服務(wù)器將對(duì)其狀態(tài)的所有更改記錄到日志中。同步實(shí)用工具定期處理此日志,以更新備用服務(wù)器的狀態(tài),使其與活動(dòng)服務(wù)器的一致。當(dāng)活動(dòng)服務(wù)器發(fā)生故障時(shí),備用服務(wù)器必須使用此同步實(shí)用工具處理自上次更新以來事務(wù)日志中的任何添加內(nèi)容。◎熱備用。在熱備用法中,將把活動(dòng)服務(wù)器內(nèi)部狀態(tài)的更新立即復(fù)制到備用服務(wù)器。因?yàn)閭溆梅?wù)器的狀態(tài)是活動(dòng)服務(wù)器狀態(tài)的克隆,所以備份服務(wù)器可以立即成為活動(dòng)服務(wù)器,并開始處理事務(wù)?!蚬蚕泶鎯?chǔ)。在共享存儲(chǔ)方法中,兩臺(tái)服務(wù)器都在共享存儲(chǔ)設(shè)備(如存儲(chǔ)區(qū)域網(wǎng)絡(luò)或磁盤陣列)上記錄其狀態(tài)。這樣,因?yàn)椴恍枰M(jìn)行狀態(tài)共,故障轉(zhuǎn)移可以立即發(fā)生。這種同步方式所需的切換時(shí)間也較短,可用性也較高。
?、鄞_定活動(dòng)服務(wù)器
對(duì)于指定的一組應(yīng)用程序,只存在一臺(tái)活動(dòng)服務(wù)器,這是極其重要的。
④擴(kuò)展故障遷移集群服務(wù)器
故障遷移解決方案示例
在下圖中,網(wǎng)絡(luò)中只有一臺(tái)服務(wù)器為網(wǎng)絡(luò)客戶端提供服務(wù),當(dāng)這臺(tái)服務(wù)器出現(xiàn)故障時(shí),就無法向用戶提供服務(wù):
圖三 有故障單點(diǎn)的服務(wù)器
為了提高上圖網(wǎng)絡(luò)中服務(wù)器的高可用性,可以采用服務(wù)器集群故障轉(zhuǎn)移技術(shù),如下圖:
圖四 具有故障轉(zhuǎn)移的服務(wù)器集群方案
在上圖方案中,第一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器是處理所有事務(wù)的活動(dòng)服務(wù)器。僅當(dāng)?shù)谝慌_(tái)數(shù)據(jù)庫(kù)服務(wù)器發(fā)生故障時(shí),處于空閑狀態(tài)的第二臺(tái)數(shù)據(jù)庫(kù)服務(wù)器才會(huì)處理事務(wù)。集群將一個(gè)虛擬IP地址和主機(jī)名在客戶端和應(yīng)用程序所使用的網(wǎng)絡(luò)上公開。
二、服務(wù)器集群:負(fù)載均衡解決方案
將服務(wù)或應(yīng)用程序安裝到多臺(tái)服務(wù)器上,并將這些服務(wù)器配置為共享工作負(fù)荷,這種類型的配置就是Load-Balanced Cluster(負(fù)載均衡集群)。負(fù)載均衡技術(shù)通過將客戶端請(qǐng)求分散到多始服務(wù)器上,從而提高了基于服務(wù)器的程序的性能。
負(fù)載均衡器使用不同的算法控制通信流量,這些算法用于以智能方式分散負(fù)載,或最大限度地利用集群內(nèi)的所有服務(wù)器。其中一些典型的算法如下:◎循環(huán)法。循環(huán)算法將負(fù)載均衡地分配每臺(tái)服務(wù)器,而不考慮當(dāng)前的連接數(shù)或響應(yīng)時(shí)間。循環(huán)法適合于集群中的服務(wù)器具有相同處理能力的情況。◎加權(quán)循環(huán)法。加權(quán)循環(huán)算法適合于每臺(tái)服務(wù)器具有同處理能力的情況。管理員將性能權(quán)值手動(dòng)分配給每臺(tái)服務(wù)器,而且按照服務(wù)器權(quán)值自動(dòng)生成調(diào)度序列?!蜃钌龠B接。最少連接算法確定集群中哪臺(tái)服務(wù)器當(dāng)前正在處理連接數(shù)最,從而將請(qǐng)求發(fā)送給服務(wù)器。◎基于負(fù)載。基于負(fù)載算法先判斷集群中哪臺(tái)服務(wù)器當(dāng)前的負(fù)載最低,然后將請(qǐng)求發(fā)送給該服務(wù)器。
負(fù)載均衡解決方案示例
負(fù)載均衡的兩種主要類別如下:◎基于軟件的負(fù)載均衡?;谲浖呢?fù)載均衡是在負(fù)載均衡集中安裝特殊的均衡管理軟件。均衡管理軟件根據(jù)不同的算法發(fā)送或接收客戶端向服務(wù)器發(fā)出的請(qǐng)求?!蚧谟布呢?fù)載均衡。
圖五 負(fù)載均衡集群方案