本文介绍了在常规集群操作过程中应执行的后期安装工作和管理任务。维护一个集群配置并将更改应用到一个正在运行的集群需要严格的过程和更改管理;否则,集群可能无法维持平衡,并且在出现故障时可能无法按设计的方式进行响应(故障转移)。系统管理员和应用程序管理员必须密切协作,维护一个正常运行的集群,使之总能够提供预期的结果。
问题确定
HACMP 提供了各种工具来确定问题。集群配置和操作的每个方面都有多种对应的问题确定工具和技术。
在 HACMP 中进行问题确定需要有针对 HACMP 集群中的各个方面的特定技能,其中包括:
- IBM pSeries 硬件
- AIX 系统管理和问题确定
- 网络和 TCP/IP
- 存储
- 应用程序
- HACMP
HACMP Problem Determination 工具包括以下选项:
- HACMP 验证
- 集群状态
- HACMP 日志查看和管理
- 从脚本故障中恢复
- 从活动配置中还原配置数据库
- 释放由动态重新配置设置的锁
- 清除 SSA Disk Fence 注册
- HACMP 跟踪工具
- 事件模拟
- 错误通知
HACMP 还提供了用于确定问题的 SMIT 菜单(请参见示例 1)。
示例 1 问题确定工具
Problem Determination Tools |
HACMP 验证
在 HACMP Problem Determination Tools 菜单下选择此选项即可使用缺省方法或自定义验证方法验证集群配置。
要访问此菜单,还可以使用 smitty clverify.dialog 快速路径(请参见示例 2)。
示例 2 选择集群验证方法
Verify Cluster |
缺省情况下,在基本 HACMP 验证方法中,系统会对集群拓扑和资源进行验证。可以切换此输入字段来运行程序,也可以选择 None 在 Custom-Defined Verification Method 字段中指定自定义验证方法。
- 自定义验证方法
自定义验证方法是客户提供的用于验证特定应用程序的 HACMP 配置的脚本,类似于应用程序启动/停止脚本。在您想要将此脚本用于应用程序服务器时,必需向 HACMP 定义该脚本。
缺省情况下,如果您未选择任何方法,clverify 实用程序将不会检查基本验证方法,并且会生成一条错误消息。验证方法的列出顺序决定了所选方法的运行顺序。此顺序在后续的验证中将保持不变,直到您选择了不同的方法。选择 All 对所有自定义方法进行验证。
- 错误计数
缺省情况下,即使程序在运行过程中发现错误也会运行到最后。要在错误数量达到某一特定值时取消此程序,请在此字段键入该数值。
- 创建日志文件来存储输出
输入用于存储验证输出的输出文件的名称。缺省情况下,验证输出存储在缺省 clverify 日志中,路径为/var/hacmp/clverify/clverify.log。
- 验证模式
选择“normal verification”将运行适用于当前集群配置的所有验证检查。选择“verify modifications only”将对与 HACMP 配置中发生更改的部分相关的检查进行验证。
仅验证经过修改的配置类可加速验证过程。
注意:系统仅在活动集群中对配置差异进行验证(DARE)。在非活动集群中,选择“verify modifications only”不起作用;无论是否选择它,系统都会对所有 HACM 配置类进行验证。- 详细输出
选择“on”会将所有输出显示到通常存在于以下位置的控制台:
/var/hacmp/clverify/clverify.log。缺省值为 off。
View current state
在 HACMP Problem Determination Tools 菜单中选择此选项将显示节点、通信接口、资源组的状态,以及最近五个事件的本地事件摘要。
HACMP log viewing and management
在 HACMP Problem Determination Tools 菜单中选择此选项将转入与日志文件相关的实用程序的菜单。在此您可以查看事件摘要,更改/显示日志文件参数,重定向日志文件,以及查看日志文件。
Recover from HACMP script failure
在 HACMP Problem Determination Tools 菜单中选择此选项可从 HACMP 脚本故障中恢复。
在集群事件失败及集群处于错误状态时,此选项是很有用的。
此类错误的一个示例是 config_too_long 事件,此事件在一个节点无法释放文件系统(由于“残余”进程)时可能会发生;因此,接管节点无法加载文件系统。
Recover From HACMP Script Failure 菜单选项调用 /usr/es/sbin/cluster/utilities/clruncmd 命令,该命令向指定节点上的 ClusterManager 守护进程 (clstrmgrES) 发送一个信号,指示该进程终止任何错误挂起事件脚本并稳定集群活动。
要从脚本故障中恢复,请运行 smitty hacmp 并选择 Select HACMP Problem Determination Tools → Recover From Script Failure,然后选择要对其运行 clruncmd 命令的节点的 IP 标签/地址,并按 Enter。
Restore configuration database from active configuration在 HACMP Problem Determination Tools 菜单中选择此选项,将在使用集群管理器当前使用的 Active Configuration Directory (ACD) 中的值恢复配置数据库之前,自动将快照中的任何配置更改保存到 /usr/es/sbin/cluster/snapshots/UserModifiedDB 文件中。
要执行此任务,请运行 smitty hacmp 并选择 HACMP Problem Determination Tools → Restore HACMP Configuration Database from Active Configuration,然后按 Enter。
Release locks set by dynamic reconfiguration在动态重新配置 (DARE) 过程中,HACMP 将为特定于 HACMP 的 ODM 类创建临时副本,并将这些副本存储在 Staging Configuration Directory (SCD) 中。这允许您在动态重新配置进行的同时修改集群配置。
但是,在 DARE 完成之前您无法同步此新配置。只要任何集群节点上存在 SCD 就会阻止动态重新配置。
如果节点在 DARE 过程中或由于其他任何原因而发生故障,则在动态重新配置完成之后节点上仍将存在 Staging Configuration Directory (SCD),因此会阻止任何进一步的动态重新配置操作。在这种情况下,您必需删除 DARE 锁;否则,您将无法执行任何配置更改(即使您将所有节点上的集群服务都停止也无济于事)。
要删除动态重新配置锁,请运行 smitty hacmp → HACMP Problem Determination Tools → Release Locks Set By Dynamic Automatic Reconfiguration Event。
Clear SSA disk fence registers只有在紧急情况下,才可以在 HACMP Problem Determination Tools 菜单中选择此选项(通常仅在 IBM 支持部门推荐这样做时才进行选择)。
注意:共享存储的磁盘保留机制阻止从集群中的多个节点进行同时访问,这样可以避免数据损坏。既可以在存储级别实施磁盘保留机制(SSA 磁盘保留或 SCSI3 永久保留),也可以在软件级别实施磁盘保留机制(对特定的集群软件,如 General Parallel File System(GPFS))。对于共享 VG(非并发),HACMP 依赖于硬件保留机制。在集群操作过程中,发生故障的节点不能释放 SSA 存储的情况只占极少数,
因此,接管节点不能中断磁盘保留,这将让您能够通过启用共享卷组来接管资源组。
如果 SSA Disk Fencing 功能已启用,而出现了需要访问磁盘的一个或一组节点无法访问物理磁盘的情况,那么清除界限寄存器将允许访问。执行此操作后,SSA Disk Fencing 算法将被禁用,到 HACMP 从所有节点重新启动时此算法才会重新启用。
要中断 Disk Fencing,请运行 smitty hacmp 并选择 HACMP Problem Determination Tools → Clear SSA Disk Fence Registers。然后选择一个或多个受影响的物理卷,并按 Enter。
要再次启用 SSA Disk Fencing,请在共享此存储的所有节点上重新启动集群服务。
我们建议您在清除 SSA 界限寄存器之前也应停止集群服务。
HACMP trace facility如果日志文件中没有相关的内容且逐组件分析不会产生具体的结果,则可以选择此选项。您可能需要使用 HACMP 跟踪工具来尝试诊断问题。此跟踪工具详细介绍了所选的系统事件。请注意,必须同时运行 HACMP 和 AIX 软件才能使用 HACMP 跟踪。
请记住,此跟踪工具需要额外的磁盘空间来进行日志记录,并且还需要借助 CPU 之力来收集数据,因此会减慢集群节点上运行的应用程序的速度。
Event emulation选择此选项可模拟集群事件。运行此实用程序让您能够运行会产生输出但并不影响集群配置状态的事件脚本。这让您能够预测集群在发生事件时的响应,就像事件实际发生时一样。Event Emulator 遵循 Cluster Manager 在处理特定事件时使用的过程,但是不会执行任何将更改 Cluster Manager 状态的命令。
事件模拟器会对稳定集群的每个活动节点运行事件脚本。每个节点的输出都存储在调用模拟的节点上的输出文件中。
注意:可以使用环境变量 EMUL_OUTPUT 指定输出文件的名称和位置;若不进行指定,系统将使用缺省输出文件 (/tmp/emuhacmp)。HACMP error notification
虽然 HACMP 软件不会监视磁盘资源的状态,但是它为 AIX Error Notification 工具提供了一个 SMIT 接口。AIX Error
Notification 工具让您能够检测未受 HACMP 软件监视的事件。事件(错误)是使用错误标签进行标识的,如 errpt 命令所报告的(请参见示例 3)。
例如,您可以使用此方法确定磁盘适配器故障(未受 HACMP 监控),决定集群应采取的响应(使 RG 脱机、接管等)。
示例 3 错误标识符(错误 ID)
[p630n01][/]> errpt |
HACMP 日志
通常,诊断影响集群的问题的第一种方法应是检查集群日志文件。对于大多数问题,/tmp/hacmp.out file 是最有用的日志文件。
我们在最新的版本中增强了资源组处理能力,同时还对 hacmp.out 文件进行了扩展,使其能够捕获更多有关资源组的活动和位置的信息。
HACMP 日志文件
HACMP 软件可以将其生成的消息写入系统控制台和几个日志文件中。每个日志文件都包含 HACMP 软件生成的消息的子集,并且这些子集互不相同。在作为组查看时,日志文件可提供集群活动的详细视图。
虽然日志文件在系统中的实际位置可能看起来是分散的,但是日志多样性使信息可用于几乎所有 HACMP 事件。此外,您可以自定义日志文件的位置,并指定详细的日志记录操作。
重要:我们建议您使集群中所有节点间的系统时间保持同步。这样做可以使日志分析和问题确定更加方便。下面的列表描述了 HACMP 软件向其中写入消息的日志文件,以及这些日志文件中包含的集群消息的类型。此列表还就如何使用不同的日志文件提供了建议。
注意:此处列出了缺省日志目录;您可以选择将日志文件重定向到所选的目录。/usr/es/adm/cluster.log
包含由 HACMP 脚本和守护进程生成的带时间戳的格式化消息。
/tmp/hacmp.out
包含 HACMP 脚本当天生成的带时间戳的格式化消息。在详细模式(推荐使用)下,此日志文件包含脚本执行的每条命令的逐行记录,其中包括各条命令中用到的所有参数的值。
每个事件详细信息的结尾处都包括各高级事件的事件摘要(类似于在 shell 脚本中添加 -x 选项)。
系统错误日志
包含由所有 AIX 子系统(包括脚本和守护进程)生成的带时间戳的格式化消息。
/usr/es/sbin/cluster/history/cluster.mmddyyyy
包含由 HACMP 脚本生成的带时间戳的格式化消息。系统每天都会创建集群历史文件,通过文件的文件名扩展来识别各文件,其中 mm 指示月份,dd 指示日期,yyyy 指示年份。
/tmp/clstrmgr.debug
包含由 clstrmgrES 活动生成的带时间戳的格式化消息。这些消息都是非常详细的。在调试功能打开的情况下,此文件会快速变大。您应清理此文件并尽快关闭调试选项。
/tmp/cspoc.log
包含由 HACMP C-SPOC 命令生成的带时间戳的格式化消息。此文件驻留在调用 C-SPOC 命令的节点上。
/tmp/dms_loads.out
每次在 HACMP 存储日志消息时都会触发 deadman 开关。
/tmp/emuhacmp.out
包含由 HACMP Event Emulator 生成的带时间戳的格式化消息。这些消息收集自集群中各节点上的输出文件,并且被归类到 /tmp/emuhacmp.out 日志文件中。
/var/hacmp/clverify/clverify.log
此文件包含 clverify 实用程序输出的详细信息。这些消息指示发生验证错误的节点(一个或多个)、设备、命令等。
/var/ha/log/grpsvcs、/var/ha/log/topsvcs 和 /var/ha/log/grpglsm
包含带时间戳的 ASCII 格式的消息。所有这些文件都会跟踪其对应的守护进程中内部活动的执行情况。
有关查看日志文件的更多信息,请参考 HACMP for AIX 5L V5.1 Adminstration and Troubleshooting Guide, SC23-4862-02。
快照
集群快照实用程序允许您将定义特定集群配置的所有数据的记录保存在一个文件中。此工具让您能够通过一个名为应用快照的过程重新创建特定的集群配置,前提是此集群配备有支持此配置所需的硬件和软件。
此外,快照可为排查集群问题提供有用的信息。因为快照是一些简单的 ASCII 文件,可以通过电子邮件进行发送,所以它们可以使进行远程问题确定更方便。
集群快照可用于“克隆”集群配置,同时还提供了一种可从上一 HACMP 版本中迁移集群的方法(此方法被称为快照转换迁移)。
快照信息
集群快照中保存的主要信息是 HACMP ODM 类(如 HACMPcluster、HACMPnode、HACMPnetwork 和 HACMPdaemons)中存储的数据。在应用集群快照时,这些信息可用于重新创建集群配置。
注意:集群快照不会保存任何用户自定义的脚本、应用程序服务器脚本或其他非 HACMP 配置参数。集群快照也不存储超出 HACMP 范围之外的任何特定于设备或特定于配置的数据。例如,集群快照会保存共享文件系统和卷组的名称;但是不会保存其他详细信息,如 NFS 选项或 LVM 镜像配置。快照格式
集群快照实用程序可将其保存的数据存储到以下两个不同的文件中:
ODM 数据文件 (.odm)
此文件包含集群的 HACMP ODM 对象类中存储的所有数据。此文件被赋予带有 .odm 文件扩展名的用户定义的基本名称。
因为每个集群节点上的 ODM 信息都必须相同,所以集群快照只需存储一个节点上的值。
集群状态信息文件 (.info)
此文件包含标准的 AIX 和 HACMP 系统管理命令 (C-SPOC) 的输出。此文件被赋予带有 .info 文件扩展名的同一用户定义的基本名称。任何自定义快照方法的输出都会追加到此文件中。
clconvert_snapshot 实用程序
您可以运行 clconvert_snapshot 命令对集群快照进行转换,以便从以前的 HACMP 版本迁移到最新版本。clconvert_snapshot 实用程序不会在安装期间自动运行,而是必须总是从命令行运行。每次您运行此实用程序时,转换进度都会被记录到 /tmp/clconvert.log 文件中。
注意:只有拥有 root 用户权限才能运行 clconvert_snapshot 命令。为运行此实用程序,您必须指定要从其中进行转化的 HACMP 版本。添加集群快照
可以从任何集群节点上启动集群快照创建。可以在运行的集群上创建集群快照,并且可以创建多个快照。
集群快照实用程序可以从集群中的各个节点中检索信息。
需要能够访问所有节点。由于在创建集群快照时必须要检索大量数据,因此占用的时间和内存可能是非常巨大的,在集群中有多个节点时更是如此。集群快照文件通常需要每个节点大约 10 KB(请参见示例 4)。
要创建集群快照,请运行 smitty hacmp 并选择 HACMP Extended Configuration → HACMP Snapshot Configuration → Add a Cluster Snapshot 或使用 smitty cm_add_snap.dialog 快速路径(请参见示例 4)。
填写下列字段:
Cluster snapshot name
您要用作集群快照文件的基本名称的名称。存储和检索快照的缺省目录路径为 /usr/es/sbin/cluster/snapshots。
可以使用 SNAPSHOTPATH 环境变量指定一个备选路径。
Custom defined snapshot methods
如果愿意,可以指定一个或多个要执行的自定义快照方法。
Cluster snapshot description
输入要插入到集群快照中的任何描述性文本。
示例 4 添加集群快照
Add a Cluster Snapshot |
应用集群快照
应用集群快照将使用快照中包含的新的 ODM 数据覆盖此集群中所有节点上现有 HACMP ODM 类中的数据。
可以从任何集群节点上应用集群快照。如果所有集群节点上的集群服务都处于非活动状态,则应用快照将更改系统缺省配置目录 (DCD) 中存储的 ODM 数据。
如果本地节点上的集群服务处于活动状态,则应用快照将触发集群范围内的动态重新配置事件。如果应用过程失败或者出于某种原因您想返回到以前的配置,可以重新应用自动保存的配置(请参见示例 5)。
要使用 SMIT 应用集群快照,请运行 smitty hacmp 并选择 HACMP Extended Configuration → HACMP Snapshot Configuration → Apply a Cluster Snapshot。
选择要应用的集群快照,然后按 Enter。SMIT 将显示 Apply a Cluster Snapshot 屏幕。按如下方式输入字段值:
Cluster snapshot name
显示集群快照的当前基本名称。
此字段不可编辑。
Cluster snapshot description
显示快照文件描述部分中存储的文本。此字段不可编辑。
Un/Configure Cluster Resources?
如果将此字段设置为 Yes,则 HACMP 将更改 ODM 中的资源的定义并执行由此资源更改触发的任何配置。如果将此字段设置为 No,则 HACMP 也将更改 ODM 中的资源的定义但是不会执行此更改可能需要的任何配置处理。缺省情况下,此字段设置为 Yes。
Force apply if verify fails?
如果将此字段设置为 No,则在验证新配置失败时同步将中止。作为动态重新配置处理过程的一部分,系统会在新配置成为活动配置之前对其进行验证。如果您希望即使在验证失败时同步也能继续进行,请将此字段的值设置为 Yes。缺省情况下,此字段设置为 No。
示例 5 应用集群快照
Apply a Cluster Snapshot |
事件和错误管理
自定义对运行时可能发生的各种事情的响应可提高集群可用性。这可以通过使用集群事件来实现。
Event Manager 与 Cluster Manager 进行通信,负责触发和监视所有集群事件。
集群事件位于 /usr/es/sbin/cluster/events 中,可以划分为两类,如下面的屏幕中所示。
主要事件
这些事件由 Cluster Manager 调用。此类事件包括:
- node_up 和 node_up_complete
- node_down 和 node_down_complete
- network_up 和 network_up_complete
- network_down 和 network_down_complete
- swap_adapter 和 swap_adapter_complete
- fail_standby 和 join_standby
- reconfig_topology_start 和 reconfig_topology_complete、reconfig_resource_acquire、reconfig_resource_complete 以及 reconfig_resource_release
- event error 和 config_too_long
次要事件
这些事件由其他事件调用。此类事件包括:
- node_up_local 和 node_up_local_complete
- node_down_local 和 node_down_local_complete
- acquire_service_addr 和 acquire_takeover_addr
- release_service_addr 和 release_takeover_addr
- start_server 和 stop_server
- get_disk_vg_fs 和 release_vg_fs
还有一些用于以下目的的其他类型的脚本:
- 启动/停止应用程序服务器和故障通知:
- /usr/es/sbin/cluster/events/server_down
- /usr/es/sbin/cluster/events/server_down_complete
- /usr/es/sbin/cluster/events/server_restart
- /usr/es/sbin/cluster/events/server_restart_complete
- /usr/es/sbin/cluster/events/server_down
- 移动资源组
- /usr/es/sbin/cluster/events/rg_move
- /usr/es/sbin/cluster/events/rg_move_complete
- /usr/es/sbin/cluster/events/rg_move
以下操作/脚本与每个集群事件相关:
- 修改命令
使用启动参数在后台启动。
- 事件前脚本
这些脚本先于事件脚本启动。
如果您有多个事件前脚本,它们将按配置中列出的顺序被调用 (ODM)。
- 恢复命令
这些脚本会在事件执行返回非零代码或应用程序的监控恢复计数器值大于零时启动。
- 事件后脚本
这些脚本在事件完成之后启动。
如果您有多个事件后脚本,它们将按配置中列出的顺序被调用 (ODM)。
从失败的 DARE 中恢复
在 DARE 期间,将用到以下三个 HACMP ODM 副本:
- Default Configuration Directory,位于 /etc/objrepos 中。
- Staging Configuration Directory,位于 /usr/es/sbin/cluster/etc/objrepos/staging 中。
- Active Configuration Directory,位于 /usr/es/sbin/cluster/etc/objrepos/active 中。
可以清除 DARE 锁,如示例 10 中所示。
示例 10 清除 DARE 锁
Problem Determination Tools |
事件前和事件后注意事项
您应该注意,集群同步不会将事件前和事件后脚本从集群中的一个节点复制到其他节点,因此您必须将这些脚本复制到所有集群节点。
由于 AIX 中的缺省执行 Shell 为 Korn Shell,因此请记住将这一解释器行(第一行)包括到脚本中 (#!/bin/ksh),并记得设置执行位。
确保集群脚本存在且在每个集群节点上的位置和名称都相同。
在生产环境中启动集群之前,请先对所有与事件相关的脚本进行测试。
示例 6 中显示了事件前和事件后脚本。
示例 6 更改集群事件
Change/Show Cluster Events |
自定义事件
可以添加自定义集群事件,如示例 7 中所示。可以多次使用与同一事件相关的脚本。
示例 7 添加自定义集群事件
Add a Custom Cluster Event |
错误通知
缺省情况下,HACMP 提供对网络、网络适配器和节点故障的监视功能。
但是,某些错误可能会影响集群行为并触发集群事件。一个常见的磁盘故障可能会导致卷组关闭,进而导致数据不可用。
错误通知是一种 AIX 本机工具,可以配置 HACMP 来监视任何会被记录到 AIX 系统错误日志中的错误。
可以为每个可能的 AIX 错误定义一种或多种事件通知
方法。您将需要知道您要对其进行监视的特定错误的名称。
示例 8 中显示了监视 AIX 错误日志中的阵列(FC 磁盘)错误,并向系统管理员发送消息的示例。要了解有关找到错误标签的信息,请参见示例 3。
示例 8 监视磁盘错误
Add a Notify Method |
很难做到为每种可能的 AIX 错误指定错误通知方法。
可以在 SMIT 面板中指定您要监视某一错误类(例如,硬件或软件)或某一错误类型(例如,PEND、PERF、PERM 或 UNKN)。
可以使用 SMIT 菜单中的 HACMP Emulate Error Log Entry 对通知方法进行测试(请参见示例 9)。
示例 9 测试 AIX 错误通知从集群错误中恢复
万一集群事件失败,相应的脚本将返回一个非零退出代码。在出现这种情况时,您可以创建相应的恢复命令。
恢复脚本必须存在于所有集群节点上的同一位置,并且必须有执行权限。此脚本能否恢复集群状态完全取决于您。恢复计数器的非零值指定了恢复命令将运行的最大次数。如果集群事件在退出时返回零,则恢复命令将不再运行。
示例 8 中显示了一条示例恢复命令。
如果恢复命令失败,则您必须对集群日志(尤其是 /tmp/hacmp.out)进行分析,
然后手动将集群环境恢复到一致的状态。