1. 程式人生 > >在Windows Server 2012 R2中搭建SQL Server 2012故障轉移集群

在Windows Server 2012 R2中搭建SQL Server 2012故障轉移集群

鏈接 clust 但是 關於 集群 dtc p s fail base

需要說明的是我們搭建的SQL Server故障轉移集群(SQL Server Failover Cluster)是可用性集群,而不是負載均衡集群,其目的是為了保證服務的連續性和可用性,而不是為了提高服務的性能。

SQL Server始終在負載均衡集群方面都缺少自己的產品,多由第三方廠家提供,但SQL Server故障轉移集群卻由來已久,在SQL Server 2012還提供了一個可用性組(AlwaysOn High Availability Groups)的新特性,我們知道微軟的故障轉移集群(Windows Server Failover Clustering , WSFC)一般需要共享存儲,SQL Server故障轉移集群也是建立在WSFC的基礎之上,可用性組卻可以不依賴於共享存儲實現SQL Server的故障轉移,這為沒有共享存儲的環境提供了一個實現SQL Server高可用的解決方案,關於AlwaysOn特性可以參閱相關文檔,這裏我們實現的是仍是基於共享存儲的包含兩個節點的SQL Server故障轉移集群。

一、搭建Windows故障轉移集群(WSFC)

SQL Server故障轉移集群是基於WSFC的,因而我們需要事先在兩個節點中搭建一個WSFC,這裏需WSFC僅是一個容器,可以放置多個角色以實現這些角色的故障轉移。為搭建一個WSFC,除了需要域環境,還需要在節點,存儲,網絡等方面做準備。

Cluster

1、在各節點中添加Failover Clustering服務器功能。

image

2、確保各節點操作系統的更新一致,新安裝的系統要麽更新到最新,要麽暫不更新。

3、在各節點中配置管理網絡和心跳網絡,雖然一個可用網絡既可以搭建集群,但是最佳實踐還是分開。

4、在各節點中配置共享存儲磁盤,初始化並格式化磁盤,分配盤符。這裏的共享存儲磁盤可以是基於IP SAN和FC SAN的磁盤,也可以是基於文件服務器的虛擬磁盤,具體可以參考Windows Server 2012 虛擬化測試:存儲。在節點中可見磁盤如下:

image

為搭建SQL Server故障轉移集群,至少需要準備兩塊共享磁盤:集群見證磁盤Q、為存儲SQL Server數據庫和日誌文件準備的集群磁盤S。另外我們需要為SQL Server的集群實例配置分布式事務協調器(Distributed Transaction Coordinator, DTC),因而需要為DTC準備磁盤M。微軟建議將SQL Server各類文件分開存儲,最佳實踐需準備兩塊以上共享磁盤,分別存儲User Database、Backup和User Database Log文件,這就至少需要另一個集群磁盤L。綜上我們對存儲做如下配置: ?集群見證磁盤Q ?DTC磁盤M ?SQL Server程序:本地磁盤C ?User Database文件:集群磁盤S ?User Database Log文件:集群磁盤L ?TempDB文件:本地磁盤D,SQL Server 2012支持將Temp DB文件可以放在本地快速磁盤中。 ?Backup文件:集群磁盤S

另外值得一提的是到SQL Server 2014才提供了對集群共享卷的支持,因而這裏只能使用集群磁盤。

5、使用Failover Cluster Manager驗證並創建集群。完成後的集群磁盤視圖如下:

image

二、安裝SQL Server故障轉移集群

Windows故障轉移集群(WSFC)搭建成功後即完成了SQL Server故障轉移集群的基礎,接下來我們繼續完成SQL Server部分。先在一個節點上安裝SQL Server Failover Cluster,然後再另一個節點安裝加入集群節點。

image

SQL Server集群部分,先通過驗證,這裏的警告主要是搭建Windows故障轉移集群存在警告的警告,升級警告以及防火墻警告,可以繼續。

image

選擇Database Engine Services和管理組件,註意這裏只有Database Engine Services和Analysis Services支持集群,其他服務都不支持。其他組件如需要也可以隨後再添加,但是添加其他組建時選擇Add features to an existing installation,然後選擇Perfom a new installation of SQL Server 2012,而不是Add features to an existing instance of SQL Server 2012,否則最後會出現Existing clustered or cluster-prepared instance的錯誤,具體參考Installing SQL Integration Services after SQL Cluster Setup has Completed。

image

配置一個網絡名稱,類似於計算機名稱,今後將通過該名稱訪問數據庫實例。

image

三、配置DTC和SQL Server 集群

分布式事務協調器(Distributed Transaction Coordinator, DTC)在Windows中是默認安裝並運行的服務。DTC的主要目的是為了實現分布式事務,確保跨進程通信的一致性,這裏的進程可以是同一計算機中的兩個進程,也可以是不同計算機中的進程。因而在微軟的世界裏,常常看到DTC的身影。

如果只是獨立安裝SQL Server數據庫引擎則無需配置DTC。但是在同時運行SQL Serve集成服務(SQL Server Integration Services, SSIS)或者搭建SQL Sever故障轉移集群等需要分布式事務的場景中,則需要配置DTC。不配置DTC並不影響SQL Server集群的安裝,但是DTC沒能正確配置,SQL Server集群的功能將受到影響。

Windows Server 2008及以後版本在一個Windows集群中可以有多個DTC實例,這些DTC實例可以是集群實例也可以是本地實例(這裏“實例”概念的類似於SQL Server數據庫引擎實例,是作為操作系統服務運行的,是同一個可執行程序的副本,在Windows集群中運行的各類服務都是以實例的形式存在,這些實例依賴Windows集群實現故障轉移),甚至可以為SQL Server集群中每個SQL Server實例配置一個專屬的DTC實例。SQL Server集群實例按照如下的是順序選擇DTC實例:

?使用SQL Server實例專屬的DTC實例,該DTC實例作為SQL Server實例以來的資源,如果DTC實例失敗,將造成SQL Server實例的失敗。SQL Server 2008及以後版本才有此項。

?使用映射給SQL Server實例的DTC實例,使用命令msdtc可以為SQL Server實例映射DTC實例。

?使用默認的DTC集群實例,SQL Server 2008及以後版本可以在Windows集群中創建多個DTC實例,第一個創建的DTC實例為默認實例,DTC集群實例並未指定給SQL Server實例專用,因而其他應用程序也可以使用該實例。

?使用安裝在本地計算機上DTC實例。

由於SQL Server集群實例做出選擇之後是不會自動重新選擇的,比如SQL Server集群實例選擇了專屬的DTC實例,即使該實例失敗,也不會更換下一個可用的DTC實例,除非手動刪除專屬的DTC實例,因而微軟建議在SQL Server 2008及以後版本要麽為SQL Server集群中的每個SQL Server實例創建專屬的DTC實例,要麽就不要在SQL Server集群中創建任何DTC實例(這裏的DTC實例都是集群實例,即可以實現DTC故障轉移),這時SQL Server集群實例會選擇實例所在節點的本地DTC實例。關於DTC的更多信息,可以查閱這裏。當然這裏我們不會什麽也不做,下面我們將為SQL Server實例配置專屬的DTC實例。

本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2015-01/112166.htm

在Windows Server 2012 R2中搭建SQL Server 2012故障轉移集群