新手學安裝SQL Server 2008「容錯移轉叢集(Failover Cluster)」(8)

by Derrick 15. 十一月 2011 13:05

前言

 

在前一期文章中,介紹了安裝SQL Server容錯移轉叢集,以三個執行個體的叢集模式為例、組態為允許「容錯回復」,以及設定停止SQL Server服務等主題。

在本期文章裡,將繼續討論組態SQL Server容錯移轉叢集伺服器所需的分散式交易等主題。

 

實作練習八:組態SQL Server容錯移轉叢集伺服器所需的分散式交易

 

以「分散式交易協調器(DTC)」服務來看,若要在Windows Server 2008容錯移轉叢集伺服器上,搭配組態與SQL Server 2008容錯移轉叢集一起協同運作,這會是與先前的版本有不同的規劃方式,這是因為在新版本的容錯移轉叢集環境上,每個服務或是應用程式可以分別對應到所指定的「分散式交易協調器(DTC)」執行個體上。

 
以下整理了SQL Server 2008容錯移轉叢集與「分散式交易協調器(DTC)」執行個體兩者間,依序使用的關係之說明:

 

使用順序 說明
順序一 使用安裝在「區域資源群組(local resource group)」內的「分散式交易協調器(DTC)」執行個體;也就是與SQL Server容錯移轉叢集安裝在同一個「區域資源群組」中。
順序二 使用msdtc.exe指令來設定指定的SQL Server執行個體所對應之「分散式交易協調器(DTC)」執行個體。
順序三 使用容錯移轉叢集預設的「分散式交易協調器(DTC)」執行個體。
順序四 使用「節點伺服器」上的本機「分散式交易協調器(DTC)」。

表1:SQL Server 2008容錯移轉叢集與「分散式交易協調器(DTC)」執行個體之順序對應關係

這裡要說明的是:
以順序一為例,如果將「分散式交易協調器(DTC)」執行個體與SQL Server容錯移轉叢集安裝在同一個「區域資源群組」中,當此「分散式交易協調器(DTC)」執行個體遭遇到損毀失敗事件時,SQL Server並不會自動去使用容錯移轉叢集預設的「分散式交易協調器(DTC)」執行個體或是「節點伺服器」上的本機「分散式交易協調器(DTC)」。也就是說,不會自動去使用順序二、順序三或是順序四上的「分散式交易協調器(DTC)」。

 

因此,資料庫管理師必須要先將此受損的「分散式交易協調器(DTC)」執行個體由SQL Server「區域資源群組」中移除後,才夠使用其他順序上的「分散式交易協調器(DTC)」執行個體。參考文件:Understanding MS DTC Resources in Windows Server 2008 Failover Clusters
http://technet.microsoft.com/en-us/library/cc730992%28WS.10%29.aspx

 

在先前的實作練習中,已經是事先建置好容錯移轉叢集資源:「分散式交易協調器(DTC)」。在本次實作練習中,將以為SQL Server容錯移轉叢集的「預設執行個體」,配置專屬的「分散式交易協調器(DTC)」執行個體。

在本次實作中,計畫將完成以下的建置作業:

  • 將「分散式交易協調器(DTC)」移動到SQL Server「區域資源群組」內。
  • 建置「分散式交易協調器(DTC)」的第二個執行個體。
  • 啟用網路 DTC 存取功能。
  • 設定預設的「分散式交易協調器(DTC)」執行個體。
  • 測試與觀察「分散式交易協調器(DTC)」的運作。
  • 關閉「分散式交易協調器(DTC)」服務,觀察分散式交易的運作。

 

工作一:將「分散式交易協調器(DTC)」移動到SQL Server「區域資源群組」內

 

步驟01. 使用網域使用者帳戶:oscl,登入第一台「節點伺服器」:ND1。
步驟02. 點選「開始」\「系統管理工具」,選擇執行「容錯移轉叢集管理員」,選擇指定的「容錯移轉叢集伺服器」:WCL1.dba.com。


步驟03. 展開左邊的「服務與應用程式節點」節點,選取「WCL1Dtc」節點。
步驟04. 在右邊的窗格,在「Microsoft Distributed Transaction Coordinator」區域,選擇「MSDTC-WCL1Dtc」,滑鼠右鍵,選擇「其他動作」\「將此資源移動到另一個服務或應用程式」,請參考下圖1所示:

image

圖1:選擇將此資源移動到另一個服務或應用程式

 

步驟05. 在「選取服務或應用程式」視窗,在「名稱」區域,在此以選取預設的執行個體為例,請選取「SQL Server(MSSQLSERVER)」,點選「確定」,請參考下圖2所示:

 

image

圖2:選取要將執行個體移動到指定的服務或應用程式內

 

步驟06. 在「請確認動作」視窗,選取「將MSDTC-WCL1Dtc移到SQL Server(MSSQLSERVER)」,請參考下圖3所示:

image

圖3:將MSDTC-WCL1Dtc執行個體移到SQL Server(MSSQLSERVER) 「區域資源群組」內

 

步驟07. 稍待片刻,等待資源群組移轉作業的執行完成。
步驟08. 展開左邊的「服務與應用程式節點」節點,選取「 SQL Server(MSSQLSERVER)」節點。在右邊的窗格,可以觀察到此「區域資源群組」內的服務程式,請參考下圖4所示:

image

圖4:已經將「分散式交易協調器(DTC)」執行個體移動到SQL Server「區域資源群組」內

 

在上圖4中,可以檢視到「分散式交易協調器(DTC)」執行個體:MSDTC-WCL1Dtc、「伺服器名稱」:WCL1Dtc(IP位址:172.16.1.155)以及所依存的「叢集磁碟」:MSDTC(T)皆已經移動到此「區域資源群組」內。

 

步驟09. 在右邊的窗格,在「Microsoft Distributed Transaction Coordinator」區域,選擇「MSDTC-WCL1Dtc」,滑鼠右鍵,選擇「內容」。
步驟10. 在「MSDTC-WCL1Dtc」視窗,點選「原則」頁籤,設定以下的參數,請參考下圖5所示:

  • 取消勾選「如果重新啟動不成功,容錯移轉這個服務或應用程式中的所有資源」。

image

圖5:取消勾選「如果重新啟動不成功,容錯移轉這個服務或應用程式中的所有資源」

 

在上圖5中,依據預設值,是有勾選啟用「如果重新啟動不成功,容錯移轉這個服務或應用程式中的所有資源」,這表示說:若「分散式交易協調器(DTC)」發生意外損毀,無法重新啟動成功時,會將此「區域資源群組」內所有資源,皆移轉到新的「節點伺服器」上。

在此,筆者不希望因為「分散式交易協調器(DTC)」重新啟動失敗,就導致一併重新啟動SQL Server服務的事件發生,所以,特別取消勾選此參數。同樣的想法,你也可以在「SQL Server Agent」服務上,設定取消勾選此參數。

 

步驟11. 點選「套用」\「確定」。
步驟12. 在左邊的「服務與應用程式節點」節點,選取「WCL1Dtc」節點,檢視右邊的窗格,請參考下圖6所示:

image

圖6:此「區域資源群組」內已經沒有任何服務或是應用程式

 

在上圖6中,可以觀察到在此群組內,已經沒有任何的服務、叢集磁碟或是應用程式等資源。若確認不再使用到此「區域資源群組」,可以刪除此「區域資源群組」。

 

工作二:建置「分散式交易協調器(DTC)」的第二個執行個體

 

有關於實作練習的步驟部分,請參考「新手學安裝SQL Server 2008「容錯移轉叢集(Failover Cluster)」(3)」一文,內的「實作練習5:安裝「分散式交易協調器」,檢視與測試容錯移轉叢集的功能」。

請使用以下的參數來組態「分散式交易協調器(DTC)」,請參考下圖7、8、9所示:

  • 「分散式交易協調器」的伺服器名稱:WCL1Dtc2。
  • 使用的IP位址:172.16.1.156。
  • 使用的「叢集磁碟」:U。請參考「新手學安裝SQL Server 2008「容錯移轉叢集(Failover Cluster)」(1)」一文來組態設定「叢集磁碟」。

 

image

圖7:SQL Server「容錯移轉叢集」之網路架構

 

image

圖8:檢視新安裝的「分散式交易協調器」執行個體:WCL1Dtc2

 

image

圖9:以服務與應用程式方式來檢視「分散式交易協調器」執行個體:WCL1Dtc2

 

工作三:啟用網路 DTC 存取功能

 

步驟01. 使用網域使用者帳戶:oscl,登入第一台「節點伺服器」:ND1。
步驟02. 點選「開始」\「系統管理工具」,選擇執行「元件服務」。

步驟03. 在左邊窗格,展開「元件服務」\「電腦」\「我的電腦」\「Distributed Transaction Coordinator」,再展開「叢集DTC」\「WCL1DTC」,請參考下圖10所示:

image

圖10:使用「元件服務」工具,來檢視「叢集DTC」

 

步驟04. 選擇「WCL1DTC」節點,滑鼠右鍵,選取「內容」。


步驟05. 在「WCL1DTC-內容」視窗,點選「安全性」頁籤,設定以下的參數,請參考下圖11所示:

  • 在「安全性設定」區域,勾選「網路DTC存取」。
  • 在「交易管理員通訊」區域,勾選「允許輸入」,以及「允許輸出」。
  • 點選「要求相互驗證」。

image

圖11:設定啟用網路DTC的存取功能

 

在上圖11中,在「交易管理員通訊」有三個選項可以設定,請參考以下說明來執行所需的設定:

  • 「要求相互驗證」:如果選取此選項,本機「分散式交易協調器(DTC)」(Proxy 或服務) 只會使用加密訊息和相互驗證 (Windows 網域驗證),來與遠端 「分散式交易協調器(DTC)」服務通訊。如果無法建立與遠端系統的安全通訊,則會拒絕通訊。此選項只能用於和執行 Windows Server 2003、Windows XP SP2、Windows Vista 或 Windows Server 2008 的伺服器來進行通訊。
  • 「要求對連入呼叫者驗證」:如果選取這個選項,則若是無法建立相互驗證,但可以驗證連入呼叫者時,將會允許通訊。此選項只能用於和執行 Windows Server 2003 或 Windows XP SP2 的電腦進行通訊。
  • 「不需要驗證」:如果選取這個選項,則萬一嘗試啟動安全通訊失敗,則網路上的「分散式交易協調器(DTC)」通訊可能會後退至未驗證和未加密的通訊。此選項主要用於允許「分散式交易協調器(DTC)」與執行 Windows 2000、Windows XP SP1和較舊版的電腦通訊。如果某個系統已關閉遠端程序呼叫 (RPC) 安全性,也可以使用此設定。

 

步驟06. 點選「套用」,在「MSDTC服務」視窗,點選「是」,再點選「確定」,請參考下圖12與13所示:

image

圖12:需要重新啟動「分散式交易協調器(DTC)」服務

image

圖13:確認「分散式交易協調器(DTC)」服務已經重新啟動

 

步驟07. 點選「確定」,完成啟用網路DTC的存取功能。
步驟08. 請依據步驟03~07,對「分散式交易協調器(DTC)」:WCL1DTC2設定啟用網路DTC的存取功能。

 

工作四:設定預設的「分散式交易協調器(DTC)」執行個體

 

步驟01. 使用網域使用者帳戶:oscl,登入第一台「節點伺服器」:ND1。
步驟02. 點選「開始」\「系統管理工具」,選擇執行「元件服務」。


步驟03. 在左邊窗格,展開「元件服務」\「電腦」,選擇「我的電腦」,滑鼠右鍵,選取「內容」。
步驟04. 在「我的電腦-內容」視窗,點選「MSDTC」頁籤,執行以下的參數設定,請參考下圖14所示:
在「叢集預設協調器資源名稱」區域,確認選取的是:MSDTC-WCL1Dtc2。

image

圖14:設定「叢集預設協調器」

 

在圖14中,若已經建置了多個「分散式交易協調器(DTC)」執行個體,就可以讓資料庫管理師設定所謂的「叢集預設協調器」。

若是在非容錯移轉叢集伺服器的環境,系統預設的協調器是使用本機協調器,請參考下圖15所示:

image

圖15:在非容錯移轉叢集伺服器的環境,預設是使用本機的「分散式交易協調器(DTC)」

 

步驟05. 點選「確定」。

 

工作五:測試與觀察「分散式交易協調器(DTC)」的運作


步驟01. 執行SSMS管理工具,連線到「SQL Server容錯移轉叢集」:WCL1SQL,執行以下的範例程式碼1:

 

-- 指定啟動 Microsoft 分散式交易協調器 (MS DTC) 所管理的 Transact-SQL 分散式交易
BEGIN DISTRIBUTED TRANSACTION

 

範例程式碼1:啟動「分散式交易協調器」所管理的Transact-SQL分散式交易

步驟02. 點選「開始」\「系統管理工具」,選擇執行「元件服務」。
步驟03. 在左邊窗格,展開「元件服務」\「電腦」\「我的電腦」\「Distributed Transaction Coordinator」,再展開「叢集DTC」\「WCL1DTC」\「交易統計」,請參考下圖16所示:

image

圖16:使用「元件服務」工具,檢視分散式交易的交易統計資料

 

在圖16中,在中間的窗格,在「目前」區域部分,可以觀察到「使用中」的分散式交易之數量為1個;在「彙總」區域部分,但是此分散式交易尚未結束,所以沒有顯示出任何結果。


步驟04. 在SSMS管理工具,繼續執行以下的範例程式碼2:

-- 將明確或隱含的交易回復到交易的開頭,或回復到交易內的儲存點。
ROLLBACK TRANSACTION

範例程式碼2:回復「分散式交易協調器(DTC)」所管理的Transact-SQL分散式交易

 

步驟05. 使用步驟03的「交易統計」窗格,觀察分散式交易的狀態,請參考下圖17所示:

image

在圖17中,可以觀察到因為執行了ROLLBACK TRANSACTION陳述式,將回復此「分散式交易協調器(DTC)」所管理的Transact-SQL分散式交易,在「彙總」區域,在「已中止」方塊部分將顯示出累計的統計值。

 

工作六:關閉「分散式交易協調器(DTC)」服務,觀察分散式交易的運作

 

目前的環境組態是:SQL Server容錯移轉叢集伺服器:WCL1SQL,使用的是在同一個「區域資源群組」內的「分散式交易協調器(DTC)」執行個體是:WCL1Dtc。


步驟01. 點選「開始」\「系統管理工具」,選擇執行「容錯移轉叢集管理員」,選擇指定的「容錯移轉叢集伺服器」:WCL1.dba.com。
步驟02. 展開左邊的「服務與應用程式節點」節點,選取「WCL1Dtc」節點。


步驟03. 在右邊窗格,在「Microsoft Distributed Transaction Coordinator」區域,點選「MSDTC-WCL1Dtc」,滑鼠右鍵,選擇「讓此資源離線」。
步驟04. 在「請確認動作」視窗,點選「使MSDTC-WCL1Dtc離線」,稍等片刻,確認此服務已經離線,請參考下圖18所示:

image

圖18:檢視已經關閉「分散式交易協調器(DTC)」服務

 

步驟05. 執行SSMS管理工具,連線到SQL Server容錯移轉叢集伺服器:WCL1SQL,執行範例程式碼1來啟動分散式交易,將遭遇以下的錯誤訊息,無法啟動分散式交易,請參考下圖19所示:

訊息 8501,層級 16,狀態 3,行 1
伺服器 'WCL1SQL' 上的 MSDTC 無法使用。

 

image

圖19:訊息8501,無法啟動「分散式交易協調器(DTC)」服務

 

步驟06. 在SSMS管理工具,檢視「SQL Server記錄檔」,可以觀察到以下的資訊與錯誤訊息,請參考下圖20所示:

Attempting to initialize Microsoft Distributed Transaction Coordinator (MS DTC). This is an informational message only. No user action is required.
Resource Manager Creation Failed: 0x8004d01c(XACT_E_CONNECTION_DOWN)

 

image

圖20:SQLServer記錄檔內的錯誤資訊

 

經由前述的實作練習,可以確認若是「分散式交易協調器(DTC)」服務無法運作,將會造成分散式交易的相關應用程式無法執行。


步驟07. 使用「容錯移轉叢集管理員」,將「分散式交易協調器(DTC)」執行個體:MSDTC-WCL1Dtc設定重新回復上線。

 

結語

在本期文章中,帶領各位按部就班來認識將「分散式交易協調器(DTC)」移動到SQL Server「區域資源群組」內、建置「分散式交易協調器(DTC)」的第二個執行個體、啟用網路 DTC 存取功能、設定預設的「分散式交易協調器(DTC)」執行個體、測試與觀察「分散式交易協調器(DTC)」的運作、關閉「分散式交易協調器(DTC)」服務,觀察分散式交易的運作等主題。

Tags:

陳俊宇Derrick Chen | SQL Server資料庫

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List