Windows Server叢集(cluster)技術是以三層式應用程式的架構來設計的,每一層都有相對應的解決方案。例如,本文介紹的網路負載平衡(Network Load Balance,NLB)便是屬於前端的叢集技術,另外尚有屬於中介層的COM+元件負載平衡(Component Load Balance,CLB),以及後端服務的伺服器叢集(Microsoft Cluster Server,MSCS)。
在介紹NLB之前,先來了解一些與叢集有關的基本概念:什麼是叢集,以及使用叢集的好處。
叢集的基本概念
簡單來說,叢集是指一組伺服器,透過彼此的協同作業,提供一個相同的服務或應用程式,用於提升服務或應用程式的可用性(availability,註1)、可靠性(reliability,註2),以及延展性(scalability,註3)。當叢集內的伺服器掛了,請求會轉移給其他的伺服器,提供全年無休、一天24小時不中斷的服務。
Windows Server支援了三種叢集技術,分別是NLB、CLB與MSCS等,NLB和MSCS已內建於Windows Server中, CLB則需要購買Application Center。
這些叢集技術簡單說明如下:
NLB,提供以TCP/IP 為基礎的服務與應用程式的網路流量負載平衡,用於提升系統的可用性和延展性。常見的應用有terminal service、web service與web application等。
NLB是透過一個虛擬IP對外提供服務。當收到請求時,NLB會隨機決定由誰來處理請求。
CLB,提供使用COM+元件的中介層應用程式的動態負載平衡,用於提升系統的可用性和延展性。CLB會依據目前的工作負載來決定由誰來處理服務請求。
MSCS,提供後端服務與應用程式的容錯移轉(failover),可提升系統的可用性。常見的應用有SQL Server與Exchange Server等。
MSCS是由client來決定由誰來處理服務請求,所有伺服器共用一個share storage來儲存session狀態。當主動伺服器掛了,則繼續由被動伺服器接手。被動伺服器會從share storage取出session狀態,繼續未完成的工作,以達到容錯移轉的目的。
NLB的運作原理
對Windows Server叢集有了基本的認識之後,接下來進一步了解NLB是如何將Client的服務請求分配給叢集內的伺服器,以分散服務請求的流量,使得負載不會集中在某一部伺服器上。NLB是使用篩選模式相似性演算法來分配服務請求。它又分成無相似性、單一相似性,以及class C等三種,簡單說明如下:
無相似性
Client的服務請求會平均分配到叢集內的每一部伺服器。假設NLB叢集內有2部伺服器。當接到Client的請求時,NLB會將第1個請求交由第1部伺服器來處理,第2個請求交由第2部伺服器來處理,第3個請求交由第1部伺服器來處理,…依此類推。因為所有Client連線會平均分配到每一部伺服器,因此可以達到最佳的負載平衡。如果需要執行交易楚理,為了能夠共享session狀態,則必須將session狀態集中儲存在state或database server中。這種方式適用於大部分的應用程式。
單一相似性
Client的服務請求會固定分配到叢集內的某一部伺服器。當接到Client的請求時,NLB會根據Client 的IP來決定交由哪一部伺服器來楚理,也就是一部伺服器只會處理來自某些IP的請求。因為一個IP的服務請求只會固定由一個伺服器來處理,因此沒有session狀態共享的問題,但可能會導致負載不平衡。這種方式適用於連線需支援 SSL 集多重連線的通訊協定 ( 例如FTP與PPTP等)。
Class C與單一相似性類似,不同的是Class C是根據IP的Class C遮罩來決定交由哪一部伺服器來楚理,也就是一部伺服器只會處理來自某些網段C的請求。這種方式可確保使用多重 Proxy 的用戶端能導向到相同的伺服器。
結論
在動手建立NLB之前,需要特別注意一些限制條件,例如伺服器的Private IP必須是固定,而且在相同的網段。若只有一張網卡,則叢集內伺服器之間無法互通,因此建議要有兩張網卡,一張網卡用於建立NLB,另一個網卡,則用於伺服器之間的heart beat,偵測叢集內伺服器是否正常運作。若是使用兩張網卡,則只能在其中一張網卡上設定default gateway,否則封包將無法轉送至正確的IP位址上。
NLB的基本概念簡單地介紹到這理,實作部份可利用Windows Server的網路負載平衡管理員或區域連線設定,詳細步驟請參閱"說明與支援"。
註1:可用性(availability)是指應用程式、服務或系統提供的服務等級。可用性高的系統很少停機 (無論是計劃的還是意外的停機)。可用性通常表示為服務或系統可用的時間百分比,例如,一年停機 8.75 小時之服務的可用性是 99.9%。
註2:可靠性(reliability)是指電腦系統或裝置在指定期間內或是指定條件下,可繼續運作的可能性。
註3:延展性(scalability)是測量電腦、服務或應用程式可以擴充至何種程度以符合漸增之效能需求的一種方式。對於伺服器叢集而言,它是指叢集的整體負載超過其功能時,可持續為現存叢集新增一或多個系統的能力。
分類: 資