Windows Server 2008 R2:对故障转移群集进行故障排除

如果故障不可避免,则在 Windows Server 中配置故障转移群集有助于确保近乎不间断的可用性。

John Marlin

多年以来,Windows Server 一直在改变,具有不同的版本、不同的支持级别以及不同的故障排除策略。当前的支持策略如下:要让 Microsoft 客户支持服务 (CSS) 部门将 Windows Server 2008 或 Windows Server 2008 R2 故障转移群集解决方案视为正式受支持的解决方案,它们必须满足以下条件

  • 所有的硬件和软件组件都必须符合获得“通过 Windows Server 2008 R2 认证”微标的资格。
  • 该全面配置的解决方案必须通过“故障转移群集管理”中的“验证”测试。

通过确保您有受到官方支持的版本,您将最有可能确保一切正常。总是会出现一些与硬件供应商有关的问题,或者可能需要 Microsoft 介入针对一些配置提供帮助,但您至少应该做好入门准备。下面介绍一些与 Windows Server 2008 R2 故障转移群集有关的常见问题,以及如何恰当地解决这些问题。

不断变化的群集

在 Windows Server 2008 R2 中随着群集验证向导(集成到故障转移群集中)的引入,群集取得资格的方式已经发生明显变化。通过“群集验证”向导,可以对一组您打算作为群集中的节点的服务器运行一系列有侧重点的测试。

此验证过程会对基础硬件和软件逐一进行直接测试。这将为给定配置对故障转移群集的支持程度给出一个准确的评估。如果对运行中的群集使用该向导,您还会知道自己是否符合最佳做法。向群集中添加新的硬件或驱动程序时,应该运行该向导。

对于那些热衷于脚本编写的人来说,故障转移群集现在支持 Windows PowerShell。由于不再对 CLUSTER.EXE 进行更新,您应当进一步熟悉它。如果您不知道这些 cmdlet 是什么以及它们的含义,可以运行 Get-Help *Cluster* 命令。此命令将为您提供一个介绍这些命令的列表,如下所示:

名称                         摘要
----                             --------
New-Cluster               创建新的故障转移群集。在可以创建
                                  群集之前,您必须...

如果您不知道如何使用该命令,可以使用 Get-Help New-Cluster –Examples 来查看一些示例,如下所示:

名称

New-Cluster

摘要

创建新的故障转移群集。在可以创建群集之前,您
必须先连接硬件(服务器、网络和存储设备)并运行
验证测试。

-------------------------- 示例 1 --------------------------

C:\PS>New-Cluster -Name cluster1 -Node node1,node2,node3,node4

名称
----
cluster1

说明
-----------
此命令使用 IP 寻址的默认设置创建了一个四个节点的群集,名为
cluster1。

在 Windows 中收到事件时,最好真正理解它们的含义。并非像您希望的那样,一些事件不是描述性的。您可能看到的所有事件的列表(其中包括事件描述)在线提供。

事件日志担纲

如果遇到问题,首先应该查看的几个位置之一就是群集事件。所有提供的严重事件、错误或警告都将在系统事件日志中包括。信息性消息(例如组脱机、组移动到另一节点等)都将包括在群集操作通道中。可以在事件查看器/应用程序和服务日志/Microsoft/Windows/FailoverClustering 中查看这些事件。

如果不确定某个具体服务/应用程序组或者资源出现了什么问题,可以在故障转移群集管理中查看它。如果具体某个组突出显示,请选择“显示此应用程序的关键事件”。如果具体某个资源突出显示,请选择“显示此资源的关键事件”。

这将打开事件日志并筛选该具体的组或资源。将向您提供在系统事件日志中找到的群集中所有节点的所有实例。在一个位置提供所有这些内容将给您带来好处。

在确定资源后,可以转到系统事件日志中查看是否还有其他推动因素。不要让症状分心,请专注于根源。例如,如果网络名称或者 IP 地址失败,是否还有任何其他网络类型的事件会导致这种情况出现(TCPIP 堆栈失败、网卡出现故障等)?

群集调试日志记录已经变为事件跟踪会话。没有更多的 CLUSTER.LOG。系统现在向位于 %WinDir%\System32\winevt\logs 文件夹中的提取、转换和加载 (ETL) 文件中写入。可以使用这些 ETL 文件根据全部三个文件生成要查看的单个 CLUSTER.LOG。不过,此日志是个实时“快照”。换言之,在生成 Cluster.log 后,将不会再向 Cluster.log 文件本身写入。每次在节点上生成一个日志文件时,将覆盖现有的日志并替换为新的日志。

可以使用 Windows Powershell 命令 Get-ClusterLog 来生成日志。此命令将应用于该群集中的所有节点并在 %WinDir%\Cluster\Reports 文件夹中为每个节点创建日志文件。根据节点数及文件的大小,可能还要考虑一些其他开关。

假设您有一个 9 节点的群集并且想获得所有日志。您可以使用 –Destination 开关生成全部 9 个日志文件并将它们复制到一个特定位置。这样,您可以从一个位置获取它们。还要在文件名中采用节点的名称(例如,Get-ClusterLog –Destination c:\logs 将在 C:\LOGS 文件夹中创建 Node1_Cluster.log、Node2_cluster.log 等日志文件)。

如果问题比较容易再现,还可以考虑:使用 –Timespan 开关(以分钟为单位)。只需在节点上再现问题并运行 Get-ClusterLog –Timespan 5 –Node Node1 即可。这样将仅为 Node1 生成 Cluster.log 文件并将仅捕获最后五分钟的事件。

以下是一些适用于这一级别故障排除的提示:

  • 日志冗长复杂。不应该首先查看日志。
  • 确保日志捕获至少三天的数据。这样,如果在星期五晚上出现故障,在您星期一上班时数据将不会丢失。每个日志的大小为 100MB。如果需要增加大小,请使用 Windows Powershell 命令 Set-Clusterlog –Size 200 或者您指定的任何大小(以 MB 为单位)。
  • 某些应用程序可能会在日志中生成大量数据。如果是这种情况,可能需要增加日志的大小。
  • 群集调试日志是按照 GMT 生成的,因此您需要转换时间,使之与事件发生时的当地实际时间相符。
  • 可以根据想要查看的内容使用 –Destination 或 –Timespan。

下个月我们将向您介绍一些常见的故障排除方案。

John Marlin

John Marlin 在商业技术支持组担任高级支持专家级工程师。他已为 Microsoft 工作 19 年有余,在后 14 年中他一直专攻群集服务器。

相关内容