由二台或更多物理上獨立的伺服器共同組成的"虛擬"伺服器稱之為叢集伺服器。一項稱做MicroSoft叢集服務(MSCS)的微軟服務可對叢集伺服器進行管理。一個SQL Server叢集是由二台或更多運行SQL Server的伺服器(節點)組成的虛擬伺服器。如果叢集中的一個節點發生故障,叢集中的另一個節點就承擔這個故障節點的責任。
認為一個 SQL Server叢集能夠給叢集中的兩個節點帶來Server Load Balancer,這是一種常見的誤解。雖然這似乎很有用,但卻是不正確的。這也意味著集束SQL Server不能真正提高效能。集束SQL Server只能提供容錯移轉功能。容錯移轉就是當系統中的一台機器發生故障失去其功能時,另一台機器將接手運行它的SQL Server執行個體。這種功能失效可能是由於硬體故障、服務故障、人工故障或各種其它原因。
為何要集束SQL Server環境?
在實用性方面,叢集SQL Server環境令人滿意。在進行容錯移轉時,將資料庫執行個體由一台伺服器轉移到另一台伺服器的時間非常短暫,一般只需要3至7秒鐘。雖然需要重建串連,但對資料庫的終端使用者而言,容錯移轉處理通常是透明的。低廉的容錯移轉成本還可協助你對叢集中的節點進行維護,而不會造成伺服器完全無法訪問。
SQL Server叢集類型
一共有兩種類型的SQL Server叢集:主動/被動叢集和主動/主動叢集。下面分別對它們進行說明(說明以兩個節點的SQL Server叢集為基礎)。
主動/被動叢集
在這種類型的叢集中,一次只有一個節點控制SQL Server資源。另一個節點一直處於備用模式,等待故障發生。進行容錯移轉時,備用的節點即取得SQL Server資源的控制權。
優點:由於伺服器上只有一個執行個體在運行,所以在進行容錯移轉時,不需要另外的伺服器來接管兩個SQL Server執行個體,效能也不會因此降低。
缺點:由於虛擬伺服器上只有一個SQL Server執行個體在運行,另一台伺服器總是處理備用模式與空閑狀態。這意味著你並沒有充分利用你購買的硬體。
主動/主動叢集
在這種類型的叢集中,叢集中的每個節點運行一個獨立且主動的SQL Server執行個體。發生節點故障時,另一個節點能夠控制發生故障節點的SQL Server執行個體。然後這個正常的節點將運行兩個SQL Server執行個體--它自己的執行個體和發生故障的執行個體。
優點:通過這種配置,你能夠充分利用你的硬體。在這樣的系統中,兩個伺服器都在運行,而不是只有一台伺服器運行,而另一台處於等待故障發生的備用模式,因此你能夠充分利用你購買的機器。
缺點:如果進行容錯移轉,一台伺服器運行兩個SQL Server執行個體,效能就會受到不利影響。然而,效能降低總比虛擬伺服器完全失靈要強得多。這種配置的另一故障在於它要求購買的許可要比主動/被動叢集多一些。因為叢集在運行兩個主動SQL Server執行個體,這要求你購買兩個單獨的伺服器許可。在某些情況下,這也可能對你形成阻礙。
叢集考慮
在高實用性方面,叢集SQL Server環境有一定的優勢。然而,高實用性也確實伴隨某種折衷。
首先,建立一個叢集SQL Server環境非常昂貴。這是因為叢集中的節點必須遵照叢集節點的相容性列表。而且,還需要建立一個複雜的網路,機器的配置必須幾乎相同,同時需要實現資料庫檔案磁碟子系統共用。儲存區網路(SAN)是建立這種子系統的不錯選擇,但SAN並非必要,而且十分昂貴。另外,如果你正在運行一個主動/主動叢集,你需要為叢集中運行SQL Server執行個體的每台機器的處理器購買一個許可。
因為當地叢集主要局限於同一地理地區,自然災難可能會使叢集完全失靈。在那種情況下,你需要轉移到災難恢複網站進行繼續操作。你也可以建立地理分散的SQL Server叢集,但這樣的系統更加複雜與昂貴。