服務器群集利用了Windows Server系列的Enterprise Edition中的內置群集功能實際上對於群集使用Windows Server 要比Windows Advanced Server 好得多要想使您從群集中獲得的好處最大化您需要合適的硬件而這涉及到一些費用只是利用共享磁盤將幾個服務器拼湊在一起是不夠的您不能依賴這樣的事實即單獨的硬件組件可能存在於 Windows目錄(以前稱為硬件兼容性列表)中系統作為整體必須存在於Windows目錄中但不要擔心還有其他一些經過認可的低成本群集解決方案可用圖 顯示了一種典型的群集配置
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013111514524005.gif)
Figure A typical cluster
當然群集比硬件需要更多的條件 您還需要選擇合適版本的SQL Server Enterprise Edition 支持群集功能以及其他一些有用功能如能夠利用更多CPU分布式和可更新已分區視圖內置日志傳送自動使用索引視圖如果已經擁有Enterprise Edition 許可證則應考慮群集您是否有構成傳統群集所必需的兩到八台服務器(我們馬上會討論單節點群集)如果擁有SQL Server Standard Edition則可以安裝兩節點群集
Windows Server Enterprise Edition和Datacenter Edition 附帶內置群集功能安裝群集只需運行群集管理器您可以同時添加所有節點也可以每次添加一個節點類似地在安裝 SQL Server 時您可以選擇安裝在單獨的非群集服務器上也可以選擇將虛擬實例安裝在群集上如果選擇安裝虛擬實例可以安裝在群集的所有節點上也可以安裝在一部分節點上甚至僅安裝在一個節點上
最後為了達到群集的真正目標即高可用性需要為您提供合格的人員以及在出現問題時所遵循的預先演練好的過程盡管群集是防止出現硬件故障的有力保障但它無法阻止用戶出錯例如午夜時分一位睡眼朦胧的DBA刪除了一份重要的表
單節點群集
盡管您在此刻只擁有一台服務器也可以考慮創建一個單節點群集如果這樣做您可以在以後選擇升級到群集從而無需重建但是請務必確保您所選擇的硬件位於 Windows目錄的群集部分
這樣做不僅僅只是為了實現能夠在以後添加節點這個高可用性如果您發現您的服務器恰好沒有必需的功能那麼您猜會發生什麼事情這意味著您需要遷移 既費時又費力如果您有一個單節點群集則遷移過程就會變得很容易停機時間也少得多您需要向群集中添加新節點將SQL Server二進制文件和服務包添加到該新節點然後故障轉移到該新節點接下來添加任何服務包之後的更新程序最後刪除舊節點停機時間只是故障轉移時間與添加更新程序(如果有)時間之和
添加節點
由於一個群集中的所有節點必須相同您應該立刻(而不是稍後)采取行動獲得另外的節點如果等待時間太長節點可能會退出生產曾經就有這樣一個項目我不得不在 SQL Server 群集中重建節點我請操作系統/網絡管理員處理了基本的計算機構建然後我投入工作將構建的計算機添加回群集並准備將其用作 SQL Server 節點一切都進行得很順利直到我需要故障轉移到新節點但令我非常沮喪的是它卻直接執行了故障恢復長話短說盡管我已經准備了有關如何構建新群集的詳細文檔其中包括如何將群集服務帳戶和SQL Server服務帳戶添加到這兩個節點但顯然管理員並沒有遵循該文檔管理員沒有將這些服務帳戶添加到重建節點所以他們在重建之前所擁有的權限便不再存在
我花了很長時間才追捕到這個原因有一天我突然想到查看一下本地組成員身份當我添加了這兩個帳戶之後故障轉移便順利進行了於是我開始思考雖然您只是偶爾才需要重建節點但如果需要重建節點那便是在緊急時刻盡管我已經提供了文檔但人們並不利用它只需編寫一個簡短的腳本來添加這兩個帳戶及進行任何其他必要的自定義就能使安全部分自動完成在SQL Server 中事情得到了改善安裝程序要求您為SQL Server服務帳戶設置域級組
當然這讓我想得更多您可以創建幾個腳本它們調用CLUSTEREXE將節點添加到Microsoft Cluster Server (MSCS)群集中您只需為腳本提供節點名稱然後由腳本處理其余工作在緊急情況下自動化確實是您的朋友
N+群集
有時向群集添加節點的原因不是您要更換節點您可以將更多的SQL Server實例添加到群集中且每個實例都需要不同的磁盤資源雖然多個實例可以在一個節點上運行但這些實例會共享CPU和RAM因此可能會導致性能降低理想情況下在一個節點上僅運行一個實例但在發生故障轉移時如何能確保做到這一點呢?很簡單答案是有一個節點上不運行任何服務而其他節點則是每個節點上運行一個SQL Server實例實際上這就是N+群集的定義 N+個節點上運行N個實例額外的節點是備用節點
升級SQL Server
升級SQL Server的群集實例不是因為膽小構建群集只為一個原因 您需要正常運行時間但SQL Server 提供了許多您想利用的增強功能所以如果您准備升級無需太多停機時間便可以繼續進行
您會選擇哪種方案?我們首先看一看成本最高的解決方案創建整個新群集這意味著要創建若干新服務器或許還要創建新的存儲區域網絡(SAN)您或許可以保留現有的網絡交換機但這大約就是您所要保留的全部顯然這種方法的成本很高但它具有一定的優勢與舊硬件相比新硬件的運行通常要好得多因為磁盤容量和速度都得到了增長因此僅僅使用新硬件您的性能就會得到迅速提高您甚至可能會租用設備而這只是為了保持領先地位
硬件到位後您可以在此安裝上創建新的虛擬SQL Server將生產數據庫復制過來然後考察新系統的性能從而在移交日期之前留有充足的時間來解決程序錯誤但別忘了編寫腳本從現有服務器中退出(萬一發生災難性故障最好訪問supportmicrosoftcom/kb/來更新登錄構建腳本)
[] []
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22475.html