1. 程式人生 > >輕鬆學會 SQL Server叢集故障轉移

輕鬆學會 SQL Server叢集故障轉移

一、SQL Server 故障轉移群集介紹
      SQL Server 故障轉移群集構建於 Windows Server 故障轉移群集之上。Windows伺服器故障轉移叢集旨在提供高可用性服務或應用程式叢集內執行故障轉移。它包含一組獨立執行的伺服器來提高應用程式和服務的可用性。故障轉移叢集可以防止硬體和軟體故障, 將故障資源從一個伺服器 (或叢集節點) 轉移到另一個的節點。故障轉移是一個過程, 以一個叢集服務或應用程式在一個節點上離線,並將它重新聯機在另一個節點。整個過程對使用者是透明的。
SQL Server 故障轉移群集又稱為故障轉移群集例項,它包括:
• 一個或多個 Windows Server 故障轉移群集節點
• SQL Server 故障轉移群集專用群集資源組,其中包含:
  Ø 用來訪問 SQL Server 故障轉移群集的網路名稱
  Ø IP 地址
  Ø 用於 SQL Server 資料庫和日誌儲存的共享磁碟
  Ø 在所有故障轉移群集節點中自動保持同步的檢查點登錄檔項
SQL Server 故障轉移群集在網路上顯示為一臺計算機上的單個 SQL Server 例項。在群集內部,一次只有一個節點擁有群集資源組,滿足針對該故障轉移群集例項的所有客戶端請求。在出現故障(硬體故障、作業系統故障、應用程式或服務故障)或進行計劃升級時,組所有權就轉移至故障轉移群集內的其他節點。此過程稱為故障轉移。通過利用 Windows Server 故障轉移群集功能,SQL Server 故障轉移群集通過冗餘在例項級別提供了高可用性。

1.1 常見的SQL server 故障轉移的部署
在實際的部署中,根據客戶需要可以實現多樣的SQL Server Failover Cluster 的構建方式。本節主要描述最常見的故障轉移群集配置:

二、部署SQL Server 故障轉移群集
      在實際環境中部署,必須按照具體的安裝步驟進行操作,才能成功實現故障轉移群集的真正效能。同時,也需要考慮到Windows、SQL Server各版本所支援的功能以及硬體的效能。比如說,故障轉移群集中的所有節點都必須屬於同一平臺(可以是 32 位或 64 位平臺),並且必須執行相同版本的作業系統。而且,64 位 SQL Server 版本必須安裝在執行 64 位版本的 Windows 作業系統的 64 位硬體上。在SQL Server2008 R2版本中不對故障轉移群集提供 WOW64 支援。下面列舉了從安裝SQL Server故障轉移群集前的準備工作到安裝SQL 群集節點的具體注意事項及步驟。

2.1 安裝故障轉移群集前的準備工作
2.1.1 SQL Server 2008 R2版本的差異
對於不同版本的故障轉移群集架構,首要的區別主要體現在最大硬體支援度和支援的最大故障轉移群集節點數:


Windows Server 2008 and R2 支援最多16個節點,也就是說SQL Server Datacenter\Enterprise 支援最多16節點的故障轉移群集。SQL Server Business Intelligence 和 SQL Server Standard支援兩個節點的故障轉移群集。
更多詳細資訊關於SQL Server 2008 R2 不同版本所支援的功能,請參閱SQL Server 2008 R2各個版本支援的功能

。2.1.2 確定硬體解決方案
• 如果群集解決方案中包含地理位置分散的群集節點,則還必須驗證網路延遲和共享磁碟支援之類的附加項。 有關 Windows Server 2008 和 Windows Server 2008 R2 的詳細資訊,Validating Hardware for a failover cluster(為故障轉移群集驗證硬體)和Support Policy for Windows Failover Clusters(針對 Windows 故障轉移群集的支援策略)。
• Windows Server 2008 R2 的 Advanced Server 和 Datacenter Server 版還支援 SAN 配置。 Windows 目錄和硬體相容性列表中的“群集/多群集裝置”類別中列出了一組支援 SAN 的儲存裝置,這些裝置已經過測試,可作為 SAN 儲存單元並且附加多個 WSFC 群集。 在找到經過驗證的元件後請執行群集驗證。
• 如果您在 iSCSI 技術元件上部署 SQL Server 故障轉移群集,建議您多加註意。
2.1.3 配置Windows Server故障轉移群集
• 至少需要在一個伺服器群集的節點上配置Microsoft群集服務(WSFC)。您還必須將SQL Server與WSFC一起執行。
• SQL Server 服務的資源 DLL 匯出兩個函式,MSCS 群集管理器使用它們來檢查 SQL Server 資源的可用性。
• 配置域名服務 (DNS) 或 Windows Internet 名稱服務 (WINS)。 必須在要安裝 SQL Server 故障轉移群集的環境中執行 DNS 伺服器或 WINS 伺服器。 SQL Server 安裝程式要求 SQL Server IP 介面虛擬引用註冊動態域名服務。DNS 伺服器配置應該允許群集節點動態註冊對映到網路名稱的聯機 IP 地址。

2.2 安裝SQL Server2008 R2故障轉移群集
若要安裝或升級 SQL Server 故障轉移群集,必須在故障轉移群集的每個節點上執行安裝程式。 若要向現有的 SQL Server 故障轉移群集新增節點,則必須在要新增至 SQL Server 故障轉移群集例項的節點上執行 SQL Server 安裝程式。 不要在活動節點上執行安裝程式以管理其他節點。
2.2.1 建立一個故障轉移群集例項
若要安裝 SQL Server 故障轉移群集,您必須通過執行 SQL Server 安裝程式來建立並配置一個故障轉移群集例項。
故障轉移群集例項可以在參與故障轉移群集節點的一個或多個計算機上執行。故障轉移群集例項包括:
• Microsoft 群集服務 (MSCS) 群集組(也稱為“資源組”)中的一個或多個磁碟的組合。各資源組最多可包含一個 SQL Server 例項。
• 故障轉移群集例項的網路名稱。
• 分配給故障轉移群集例項的一個或多個 IP 地址。
首先建立一個新的SQL Server故障轉移群集,並指定群集的資源,包括群集名稱、群集磁碟和群集IP地址等。下面我們通過圖例來完成一個SQL Server故障群集的安裝。
1. 在滿足安裝的準備條件後,通過安裝嚮導完成一個新的故障轉移群集的安裝


2. 在Feature Selection 頁面,選擇需要安裝的元件
3. 在Cluster Resource Group 頁面,指定群集資源組的名稱。有兩種方式來指定資源組的名稱:
• 使用下拉框制定一個現有的名稱
• 直接建立一個新的組

4. 在Cluster Disk Selection 頁面,選擇用來實現故障轉移的共享群集磁碟

SQL Server的資料將會儲存在群集磁碟中。一個資源組中,我們可以指定多個共享群集磁碟。可用的共享磁碟將會顯示在可用磁碟列表中。
注意:第一個碟符將預設磁碟儲存所有資料,但是可以再Database Engine 或者Analysis Services配置介面進行更改。

5. 在Cluster Network Configuration介面,為故障轉移群集設定網路資源配置。其中包括指定IP型別,以及為為群集例項指定群集IP地址


6. 接下來是為群集指定安全策略
在Window Server 2008及以後的版本中,Service SIDs(server security IDs) 是推薦和預設的設定。雖然指定Domain Group依然存在,但是並不推薦。更多詳細資訊關於SIDs功能描述,請參閱Configure Windows Service Accounts and Permissions

以上是在SQL Server故障轉移群集安裝過程中需要配置和注意的主要步驟。除此之外,還需要根據安裝的元件完成後面的配置任務,在此就不一一舉例說明了。

2.2.2 新增節點到SQL Server故障轉移群集
在建立並配置單節點SQL Server故障轉移群集例項後,群集並沒有實現高可用性,因為只包含只一個節點。所以我們需要向故障轉移群集中新增節點,實現高可用性。
在故障轉移群集例項的節點上執行 SQL Server 安裝程式,根據方式不同提供以下選項:
選項一:帶“新增節點”功能的整合安裝
在要新增到 SQL Server 故障轉移群集中的每個節點上,執行帶“新增節點”功能的安裝程式以新增該節點。
選項二:高階/企業安裝
不同於首先建立一個完整的故障轉移群集例項,SQL Server 高階/企業故障轉移群集安裝包括以下步驟:
1. 在有可能成為您要新建的 SQL Server 故障轉移群集的每個節點上,按照準備部分列出的“準備故障轉移群集”安裝步驟執行操作。您在一個節點上執行“準備故障轉移群集”之後,安裝程式就會建立 Configuration.ini 檔案,該檔案列出您指定的所有設定。在要準備的其他節點上,您可以將第一個節點自動生成的 Configuration.ini 檔案作為安裝程式命令列的輸入,而不需要重複執行這些安裝步驟。此步驟準備可以加入群集的節點,但完成此步驟以後還不會有可供使用的 SQL Server 例項。
2. 準備好加入群集的節點之後,在一個準備好的節點上執行安裝程式,該節點最好擁有具備“完成故障轉移群集”功能的共享磁碟。此步驟將配置並完成故障轉移群集例項。完成此步驟以後,您將有一個可供使用的 SQL Server 故障轉移群集例項,以前為該例項準備的所有結點將作為新建的 SQL Server 故障轉移群集的可能所有者。

三、SQL Server故障轉移群集案例分析
      故障轉移群集通常包含一個或多個SQL Server例項執行在兩個或多個群集節點上。在SQL Server 2008中,可在一個節點只安裝單SQL Server例項,也能夠實現同一節點上安裝多個SQL Server故障轉移例項。這也就是我們分別稱之為的Active-Passive和Active-Active群集模式。下面我們通過圖例來詳細瞭解不同的模式。

單例項Active-Passive模式:

正常情況下,例項只執行在Active節點下。當主要的Active節點遭遇故障,SQL Server 故障轉移群集會通過共享磁碟自動將例項轉移到原先的Passive節點上,使之成為Active節點。在故障轉移過程中,相應的Services也會自動開啟。

多例項Active-Active模式:

在此種模式下,多資料庫例項可以同時執行在多臺伺服器,可以更有效的提高硬體的利用率。但是對於一個例項來說,始終只能夠擁有一個owner執行在一個節點下。

四、SQL Server故障轉移群集故障排錯
      SQL Server的一個例項可能遭遇各種原因一非計劃的形式進行故障轉移或重新啟動。大多數的原因並是不由於群集出現問題。在這種情況下,我們需要遵循標準的SQL Server故障排錯步驟來確定問題的本質。
如果伺服器群集所駐留的節點存在問題,則這些問題可能將自身列為故障轉移群集例項的問題。若要調查並解決這些問題,請按以下順序對 SQL Server 故障轉移群集進行故障排除:
• 硬體:檢視 Microsoft Windows 系統事件日誌。
• 作業系統:檢視 Windows 系統和應用程式事件日誌。
• 網路:檢視 Windows 系統和應用程式事件日誌。
• 安全性:檢視 Windows 應用程式和安全性事件日誌。
• MSCS:檢視 Windows 系統和應用程式事件日誌以及群集日誌。
• SQL Server:驗證硬體、作業系統、網路、安全性和 MSCS 基礎均沒有問題後,像平常一樣進行故障排除

五、常見問題及解決方案
      在遷移到另一個節點之後,SQL Server 無法登入到網路
問題1: SQL Server 服務賬號無法與DC取得聯絡
解決方法1: 檢查事件日誌以確定是否存在網路連線問題,例如介面卡故障或 DNS 問題。驗證是否能成功對DC執行 ping 命令,以及相應埠。
問題2: 所有群集節點上的SQL Server服務賬號密碼並非全一致,或者節點沒有重新啟動從故障節點遷移過來的SQL Server服務。
解決方法2: 使用 SQL Server 配置管理器更改 SQL Server 服務帳戶密碼。如果不這樣做,並且更改了其中一個節點上的 SQL Server 服務帳戶密碼,也必須更改所有其他節點上的密碼。SQL Server 配置管理器會自動執行此操作。
SQL Server無法訪問群集磁碟
問題1: 並未在所有節點上都更新可韌體或驅動程式。
解決方法1: 確保所有節點都使用正確的韌體版本和相同的驅動程式版本
問題2: 如果故障的節點位於具有不同驅動碟符號的共享群集磁碟上,則其他節點無法恢復從該節點遷移過來的群集磁碟。
解決方法2: 兩臺伺服器上的群集磁碟的驅動碟符號必須相同。