Windows Server集群(cluster)技術(shù)是以三層式應(yīng)用程序的架構(gòu)來設(shè)計的,每一層都有相對應(yīng)的解決方案。例如,本文介紹的網(wǎng)絡(luò)負(fù)載均衡(Network Load Balance,NLB)便是屬于前端的集群技術(shù),另外尚有屬于中介層的COM+組件負(fù)載均衡(Component Load Balance,CLB),以及后端服務(wù)的服務(wù)器集群(Microsoft Cluster Server,MSCS)。
在介紹NLB之前,先來了解一些與集群有關(guān)的基本概念:什么是叢集,以及使用叢集的好處。
集群的基本概念
簡單來說,集群是指一組服務(wù)器,透過彼此的協(xié)同作業(yè),提供一個相同的服務(wù)或應(yīng)用程序,用于提升服務(wù)或應(yīng)用程序的可用性(availability,注1)、可靠性(reliability,注2),以及延展性(scalability,注3)。當(dāng)集群內(nèi)的服務(wù)器掛了,請求會轉(zhuǎn)移給其它的服務(wù)器,提供全年無休、一天24小時不中斷的服務(wù)。
Windows Server支持了三種集群技術(shù),分別是NLB、CLB與MSCS等,NLB和MSCS已內(nèi)建于Windows Server中, CLB則需要購買Application Center。
這些集群技術(shù)簡單說明如下:
1.NLB,提供以TCP/IP 為基礎(chǔ)的服務(wù)與應(yīng)用程序的網(wǎng)絡(luò)流量負(fù)載均衡,用于提升系統(tǒng)的可用性和延展性。常見的應(yīng)用有terminal service、web service與web application等。
NLB是透過一個虛擬IP對外提供服務(wù)。當(dāng)收到請求時,NLB會隨機(jī)決定由誰來處理請求。
2.CLB,提供使用COM+組件的中介層應(yīng)用程序的動態(tài)負(fù)載均衡,用于提升系統(tǒng)的可用性和延展性。CLB會依據(jù)目前的工作負(fù)載來決定由誰來處理服務(wù)請求。
3.MSCS,提供后端服務(wù)與應(yīng)用程序的容錯移轉(zhuǎn)(failover),可提升系統(tǒng)的可用性。常見的應(yīng)用有SQL Server與Exchange Server等。
MSCS是由client來決定由誰來處理服務(wù)請求,所有服務(wù)器共享一個share storage來儲存session狀態(tài)。當(dāng)主動服務(wù)器掛了,則繼續(xù)由被動服務(wù)器接手。被動服務(wù)器會從share storage取出session狀態(tài),繼續(xù)未完成的工作,以達(dá)到容錯移轉(zhuǎn)的目的。
NLB的運(yùn)作原理
對Windows Server集群有了基本的認(rèn)識之后,接下來進(jìn)一步了解NLB是如何將Client的服務(wù)請求分配給叢集內(nèi)的服務(wù)器,以分散服務(wù)請求的流量,使得負(fù)載不會集中在某一部服務(wù)器上。NLB是使用篩選模式相似性算法來分配服務(wù)請求。它又分成無相似性、單一相似性,以及class C等三種,簡單說明如下:
1.無相似性
Client的服務(wù)請求會平均分配到叢集內(nèi)的每一部服務(wù)器。假設(shè)NLB叢集內(nèi)有2部服務(wù)器。當(dāng)接到Client的請求時,NLB會將第1個請求交由第1部服務(wù)器來處理,第2個請求交由第2部服務(wù)器來處理,第3個請求交由第1部服務(wù)器來處理,…依此類推。因為所有Client聯(lián)機(jī)會平均分配到每一部服務(wù)器,因此可以達(dá)到最佳的負(fù)載平衡。如果需要執(zhí)行交易楚理,為了能夠共享session狀態(tài),則必須將session狀態(tài)集中儲存在state或database server中。這種方式適用于大部分的應(yīng)用程序。
2.單一相似性
Client的服務(wù)請求會固定分配到叢集內(nèi)的某一部服務(wù)器。當(dāng)接到Client的請求時,NLB會根據(jù)Client 的IP來決定交由哪一部服務(wù)器來楚理,也就是一部服務(wù)器只會處理來自某些IP的請求。因為一個IP的服務(wù)請求只會固定由一個服務(wù)器來處理,因此沒有session狀態(tài)共享的問題,但可能會導(dǎo)致負(fù)載不平衡。這種方式適用于聯(lián)機(jī)需支持 SSL 集多重聯(lián)機(jī)的通訊協(xié)議 ( 例如FTP與PPTP等)。
3.Class C與單一相似性類似,不同的是Class C是根據(jù)IP的Class C屏蔽來決定交由哪一部服務(wù)器來楚理,也就是一部服務(wù)器只會處理來自某些網(wǎng)段C的請求。這種方式可確保使用多重 Proxy 的客戶端能導(dǎo)向到相同的服務(wù)器。
結(jié)論
在動手建立NLB之前,需要特別注意一些限制條件,例如服務(wù)器的Private IP必須是固定,而且在相同的網(wǎng)段。若只有一張網(wǎng)卡,則集群內(nèi)服務(wù)器之間無法互通,因此建議要有兩張網(wǎng)卡,一張網(wǎng)卡用于建立NLB,另一個網(wǎng)卡,則用于服務(wù)器之間的heart beat,偵測集群內(nèi)服務(wù)器是否正常運(yùn)作。若是使用兩張網(wǎng)卡,則只能在其中一張網(wǎng)卡上設(shè)定default gateway,否則封包將無法轉(zhuǎn)送至正確的IP地址上。