当前位置: 首页>技术专区>

SQL Server群集的几个关键技巧

时间:2009-05-03 12:01来源:微软TechNet 作者:
服务器群集利用了Windows Server系列的Enterprise Edition中的内置群集功能。实际上,对于群集,使用Windows Server 2003要比Windows 2000 Advanced Server 好得多。但不要担心,还有其他一些经过认可的、低成本群集解决方案可用。图1显示了一种典型的群集配置。
  

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


SQL Server群集

Figure 1 A typical cluster


      当然,群集比硬件需要更多的条件 - 您还需要选择合适版本的SQL Server 2005。Enterprise Edition 支持群集功能以及其他一些有用功能,如能够利用更多CPU、分布式和可更新已分区视图、内置日志传送、自动使用索引视图。如果已经拥有Enterprise Edition 许可证,则应考虑群集:您是否有构成传统群集所必需的两到八台服务器(我们马上会讨论单节点群集)。如果拥有SQL Server 2005 Standard Edition,则可以安装两节点群集。


      Windows Server 2003 Enterprise Edition和Datacenter Edition 附带内置群集功能。安装群集只需运行群集管理器。您可以同时添加所有节点,也可以每次添加一个节点。类似地,在安装 SQL Server 时,您可以选择安装在单独的非群集服务器上,也可以选择将虚拟实例安装在群集上。如果选择安装虚拟实例,可以安装在群集的所有节点上,也可以安装在一部分节点上,甚至仅安装在一个节点上。


       最后,为了达到群集的真正目标,即高可用性,需要为您提供合格的人员以及在出现问题时所遵循的预先演练好的过程。尽管群集是防止出现硬件故障的有力保障,但它无法阻止用户出错。例如,午夜时分,一位睡眼朦胧的DBA删除了一份重要的表。


      单节点群集


      尽管您在此刻只拥有一台服务器,也可以考虑创建一个单节点群集。如果这样做,您可以在以后选择升级到群集,从而无需重建。但是,请务必确保您所选择的硬件位于 Windows目录的群集部分。


      这样做不仅仅只是为了实现能够在以后添加节点这个高可用性。如果您发现您的服务器恰好没有必需的功能,那么您猜会发生什么事情。这意味着您需要迁移 - 既费时又费力。如果您有一个单节点群集,则迁移过程就会变得很容易,停机时间也少得多。您需要向群集中添加新节点,将SQL Server二进制文件和服务包添加到该新节点,然后故障转移到该新节点。接下来,添加任何服务包之后的更新程序,最后删除旧节点。停机时间只是故障转移时间与添加更新程序(如果有)时间之和。


      添加节点


      由于一个群集中的所有节点必须相同,您应该立刻(而不是稍后)采取行动,获得另外的节点。如果等待时间太长,节点可能会退出生产。曾经就有这样一个项目,我不得不在 SQL Server 2000群集中重建节点。我请操作系统/网络管理员处理了基本的计算机构建,然后我投入工作,将构建的计算机添加回群集并准备将其用作 SQL Server 节点。一切都进行得很顺利,直到我需要故障转移到新节点。但令我非常沮丧的是,它却直接执行了故障恢复。长话短说,尽管我已经准备了有关如何构建新群集的详细文档,其中包括如何将群集服务帐户和SQL Server服务帐户添加到这两个节点,但显然管理员并没有遵循该文档。管理员没有将这些服务帐户添加到重建节点,所以,他们在重建之前所拥有的权限便不再存在。

      我花了很长时间才追捕到这个原因。有一天,我突然想到查看一下本地组成员身份。当我添加了这两个帐户之后,故障转移便顺利进行了。于是我开始思考。虽然您只是偶尔才需要重建节点,但如果需要重建节点,那便是在紧急时刻。尽管我已经提供了文档,但人们并不利用它。只需编写一个简短的脚本来添加这两个帐户及进行任何其他必要的自定义,就能使安全部分自动完成。在SQL Server 2005中,事情得到了改善。安装程序要求您为SQL Server服务帐户设置域级组。


      当然,这让我想得更多。您可以创建几个脚本,它们调用CLUSTER.EXE将节点添加到Microsoft Cluster Server (MSCS)群集中。您只需为脚本提供节点名称,然后由脚本处理其余工作。在紧急情况下,自动化确实是您的朋友。


      N+1群集


      有时,向群集添加节点的原因不是您要更换节点。您可以将更多的SQL Server实例添加到群集中且每个实例都需要不同的磁盘资源。虽然多个实例可以在一个节点上运行,但这些实例会共享CPU和RAM,因此可能会导致性能降低。理想情况下,在一个节点上仅运行一个实例。但在发生故障转移时如何能确保做到这一点呢?很简单:答案是,有一个节点上不运行任何服务,而其他节点则是每个节点上运行一个SQL Server实例。实际上,这就是N+1群集的定义: N+1个节点上运行N个实例。额外的节点是备用节点。

------分隔线----------------------------
推荐内容