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