要确保群集软件已被正确配置,请使用位于 /usr/sbin 目录中的以下工具:
测试共享分区,确保它们能够被访问。
启用带有 -v 选项的 /usr/sbin/shutil 工具来测试共享分区的可存取性。详情请参阅第 2.11.1 节。
测试电源开关的运行情况。
如果群集硬件配置中使用了电源开关,在每个成员上运行 clufence 命令来确保它能够远程地重开另一个成员的电源。在群集软件运行的时候不要运行这个命令。详情请参阅第 2.11.2 节。
确保所有的成员都运行同一版本的软件。
在每个成员上启用 rpm -q clumanager 命令和 rpm -q redhat-config-cluster 命令来显示被安装了的群集软件 RPM 的版本。
以下各节更详细地解释了群集工具。
共享分区所指的物理设备在所有成员中必须相同。启用带有 -v 选项的 /usr/sbin/shutil 工具来测试共享分区,并校验它们是否可被存取。
如果命令成功,在所有成员上运行 /usr/sbin/shutil -p /cluster/header 命令来显示共享分区的头数据的摘要。如果其输出在成员上不尽相同,共享分区在所有成员上指向的就不是同一设备。请检查来确定这个原始设备是否存在,它是否在 /etc/sysconfig/rawdevices 文件中被正确指定了。详情请参阅第 1.4.4.3 节。
以下的例子显示了使用 /sbin/shutil -p /cluster/header 命令来显示共享分区在群集成员 clu1.example.com 和 clu2.example.com 上所指的是同一个物理设备:
/cluster/header is 140 bytes long SharedStateHeader { ss_magic = 0x39119fcd ss_timestamp = 0x000000003ecbc215 (14:14:45 May 21 2003) ss_updateHost = clu1.example.com |
当在所有群集成员上运行 /sbin/shutil -p /cluster/header 命令时,其输出中的所有字段都应该相同。如果其输出在所有成员上不尽相同,请执行以下任务:
检查每个成员上的 /etc/sysconfig/rawdevices 文件来确保用于主共享分区和备份共享分区的原始字符设备和块设备都被正确指定了。如果它们不一样,编辑这个文件来修正错误。然后重新运行群集配置工具。详情请参阅第 2.5 节。
请确保你已在每个成员上为共享分区创建了原始设备。详情请参阅第 1.4.4.3 节。
要判定每个成员上的总线配置,运行 dmesg |less 命令来检查系统的启动消息中关于系统探测 SCSI 子系统的部分。校验所有成员是否都识别了同样的共享贮存设备并且给它们分派了同样的名称。
校验成员没有在试图挂载共享分区上的文件系统。例如,请确定实际设备(如 /dev/sdb1)没有包括在 /etc/fstab 文件中。
执行了这些任务后,重新运行带有 -p 选项的 /usr/sbin/shutil 工具。
如果群集硬件配置中部署了网络连接的或串行连接的电源开关,你需要安装群集软件并启用 clufence 命令来测试电源开关。在每个成员上启用这个命令来保证它能够远程地重开另一个成员的电源。如果测试成功,那么群集就能够被启动。
clufence 命令只有在群集软件不在运行时才能够正确地测试电源开关。这是因为,对于串行连接的开关来说,一时内只有一个程序能够使用连接电源开关和成员的串口。当 clufence 命令被启用,它会检查群集软件的状态。如果群集软件正在运行,该命令就会退出,并显示一则要求你停止群集软件的消息。
clufence 命令的选项如下:
-d — 启用调试
-f — 关闭成员的电源(fence)
-u — 开启成员的电源(unfence)
-r — 重新引导成员(重开电源)
-s — 检查所有控制成员的切换器的状态
在测试电源开关时,第一步是确保每个群集成员都能够使用所连接的电源开关来成功地通信。以下 clufence 命令的输出显示了群集成员能够使用它的电源开关来通信:
[27734] info: STONITH: rps10 at /dev/ttyS0, port 0 controls clumember1.example.com [27734] info: STONITH: rps10 at /dev/ttyS0, port 1 controls clumember2.example.com |
若 clufence 的输出中出错,请检查以下项目:
对于串行连接的电源开关:
校验用于远程电源开关连接串口的设备特殊文件(如 /dev/ttyS0)在群集配置文件中是否被正确指定了;在群集配置工具中,显示「电源控制器」对话框来检查串口的值。如果必要,使用 minicom 之类的终端模拟软件包来测试群集成员是否能够使用这个串口。
确保非群集程序(如 getty 程序)不在使用用于远程电源开关连接的串口。你可以使用 lsof 命令来执行这项任务。
检查到远程电源开关的电缆连接是否正确。校验所用的电缆是否正确(例如,RPS-10 电源开关需要一个零调制解调器电缆),以及所有连接是否被安全地拧紧了。
校验电源开关上的物理循环开关和低压开关是否被正确设置了。
对于基于网络的电源开关:
校验到基于网络的电源开关的网络连接是否可行。多数开关有一个表明连接性的链接指示灯。
你应该能够使用 ping 命令来接通网络开关;若不能,这个开关的网络参数就没有被正确配置。
校验口令和登录名(根据开关类型而定)是否被正确地在群集配置文件中指定了(通过运行群集配置工具,查看在「电源控制器」对话框中指定的属性来建立)。还有一个较有用的诊断方法是,使用和群集配置中相同的参数来校验到网络开关的 Telnet 访问是否可行。
成功地校验了和开关的通信后,请试图重开另一个群集成员的电源。在这么做之前,我们推荐你首先确定另一个成员并没有在积极地执行任何重要功能(如给活跃客户提供群集服务)。运行 clufence -f clumember2.example.com 命令会在成功关闭和 fencing 操作(意味着系统在 unfence 前不从开关处接受电源)时显示以下输出:
[7397] info: STONITH: rps10 at /dev/ttyS0, port 0 controls clumember1.example.com [7397] info: STONITH: rps10 at /dev/ttyS0, port 1 controls clumember2.example.com [7397] notice: STONITH: clumember2.example.com has been fenced! |