服务器群集利用了Windows Server系列的Enterprise Edition中的内置群集功能实际上对于群集使用Windows Server 要比Windows Advanced Server 好得多要想使您从群集中获得的好处最大化您需要合适的硬件而这涉及到一些费用只是利用共享磁盘将几个服务器拼凑在一起是不够的您不能依赖这样的事实即单独的硬件组件可能存在于 Windows目录(以前称为硬件兼容性列表)中系统作为整体必须存在于Windows目录中但不要担心还有其他一些经过认可的低成本群集解决方案可用图 显示了一种典型的群集配置
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/来更新登录构建脚本)
[] []