SQL Server集群伺服器的優缺點

2022-01-23 16:32:57 字數 1954 閱讀 6701

由二台或更多物理上獨立的伺服器共同組成的「虛擬」伺服器稱之為集群伺服器。一項稱做microsoft集群服務(mscs)的微軟服務可對集群伺服器進行管理。乙個sql server集群是由二台或更多執行sql server的伺服器(節點)組成的虛擬伺服器。如果集群中的乙個節點發生故障,集群中的另乙個節點就承擔這個故障節點的責任。

認為乙個sql server集群能夠給集群中的兩個節點帶來負載平衡,這是一種常見的誤解。雖然這似乎很有用,但卻是不正確的。這也意味著集束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集群,但這樣的系統更加複雜與昂貴。

出處:

SQL Server集群伺服器的優缺點

由二台或更多物理上獨立的伺服器共同組成的 虛擬 伺服器稱之為集群伺服器。一項稱做microsoft集群服務 mscs 的微軟服務可對集群伺服器進行管理。乙個sql server集群是由二台或更多執行sql server的伺服器 節點 組成的虛擬伺服器。如果集群中的乙個節點發生故障,集群中的另乙個節點...

集群伺服器

集群,英文名稱為cluster,通俗地說,集群是這樣一種技術 它將多個系統連線到一起,使多台伺服器能夠像一台機器那樣工作或者看起來好像一台機器。採用集群系統通常是為了提高系統的穩定性和網路中心的資料處理能力及服務能力。舉個例子來說,我們架設了一台www伺服器,上面構建了乙個電子商務 然而隨著時間的推...

tomcat伺服器集群

server info out.println request.getlocaladdr request.getlocalport out.println id session.getid 如果有新的 session 屬性設定 string dataname request.getparameter...