跳到内容 中国
HP.com 主页 产品与服务 支持及驱动程序 解决方案 如何购买
» 联系惠普
更多选项
HP.com 主页
管理 Serviceguard 第 14 版 > 第 3 章 了解 Serviceguard 的软件组件

故障响应

» 

技术文档资料

完整的 PDF 手册
» 相关文档
» 反馈
内容从此开始:

 » 目录

 » 索引

Serviceguard 将以特定方式响应各种不同的故障。对于大多数硬件故障,其响应都是用户不可配置的,但对于程序包和服务故障,可以在一定限度内选择系统的响应方式。

在节点出现故障时进行系统复位

Serviceguard 群集中最快的故障响应是 HP-UX TOCINIT,即进行系统复位,而不是正常地关闭(在本手册中通常将此操作称为系统复位)。系统复位允许程序包快速移动到其他节点,从而保护数据的完整性。

当群集节点在预定时间内无法与大多数群集成员通信时,或者在其他情况(如内核挂起或群集守护程序 (cmcld) 出现故障)下将发生系统复位。

“节点超时时发生的情况”对此情况进行了更加详细的介绍。另请参阅“群集守护程序:cmcld”

在特定环境下,也可由 Serviceguard 本身启动系统复位;请参阅“程序包和服务故障响应 ”

节点超时时发生的情况

每隔 HEARTBEAT_INTERVAL 微秒(在群集配置文件中指定),每个节点将向群集协调器发送一个心跳线消息。群集协调器从每个节点查找此消息,如果它在 NODE_TIMEOUT 微秒内未收到此消息,则群集将进行重组,并去除不再发送心跳线消息的节点(有关配置这些参数的建议,请参阅“群集配置参数 ”下的 HEARTBEAT_INTERVALNODE_TIMEOUT 条目)。

在并非群集协调器的节点以及出现节点超时(即在 NODE_TIMEOUT 秒内未收到心跳线消息)的节点上,将发生下列事件序列:

  1. 节点尝试对群集进行重组。

  2. 如果节点无法获取定额(如果它无法获取群集锁),则

  3. 节点将暂停(系统复位)。

示例

情况。假设有一个双节点群集,其中程序包 1 在系统 A 上运行;程序包 2 在系统 B 上运行。卷组 vg01 在系统 A 上独占激活;卷组 vg02 在系统 B 上独占激活。将程序包 IP 地址分别分配给系统 A 和系统 B。

故障。只为心跳线和数据流量配置了一个 LAN。在操作过程中,过大的应用程序流量将独占网络带宽,从而使心跳线程序包无法通过。

由于系统 A 不会从系统 B 接收心跳线消息,因此系统 A 尝试作为单节点群集进行重组。同样,由于系统 B 不会从系统 A 接收心跳线消息,因此系统 B 也尝试作为单节点群集重组。在选择协议过程中,每个节点将自行表决,从而为两个节点提供 50% 的表决。由于两个节点均具有 50% 的表决,因此两个节点现在争用群集锁。但只有一个节点将获得该锁。

结果。假设系统 A 获得群集锁。系统 A 作为单节点群集重组。重组后,系统 A 将确保配置为在现有群集节点上运行的所有应用程序均在运行。如果程序包 2 配置为在系统 A 上运行,当系统 A 发现程序包 2 未在群集中运行时,则系统 A 将尝试启动程序包 2。

系统 B 可识别它无法获取群集锁,因此无法对群集进行重组。为了尽快释放与程序包 2 相关的所有资源(例如对卷组 vg02 和程序包 2 IP 地址的独占访问),系统 B 将暂停(系统复位)。

注释:如果 /etc/rc.config.d/cmcluster ($SGAUTOSTART) 中的 AUTOSTART_CMCLD 设置为 0,则当节点重新启动时不会尝试加入群集。

有关群集故障切换的详细信息,请参阅白皮书《《Optimizing Failover Time in a Serviceguard Environment》》(位于 http://www.docs.hp.com ->
High Availability -> Serviceguard -> White Papers
)。

硬件故障响应

如果发生严重的系统问题(如系统混乱或 SPU 供电电路发生物理破坏),Serviceguard 会识别节点故障并将当前运行于该节点上的故障切换程序包转移到群集中其他位置的代管节点上(系统多节点程序包和多节点程序包不会故障切换)。

每个故障切换程序包的新位置由程序包配置文件决定,此文件会列出程序包的主节点和备用节点。虽然程序包转移到了另外一个节点上,但程序计数器并不转移。被转移的程序包中的进程将从头开始重新启动。为使应用程序能够在发生故障后迅速重新启动,它必须是“允许崩溃”的;即编写程序包中的所有进程时必须使它们可以检测到该重新启动。这与设计发生正常的系统崩溃后需要重新启动的应用程序是相同的。

在 LAN 接口出现故障的情况下,如果存在备用 LAN 接口,就会发生向备用 LAN 接口的本地切换。如果心跳线 LAN 接口出现故障且未配置备用或冗余心跳线,则节点将出现故障,并发生系统复位。如果一个受监视的数据 LAN 接口出现故障,且没有备用接口,则只有程序包的 NODE_FAILFAST_ENABLED(有关详细说明,请参阅“程序包配置规划 ”)设置为 YES 时,节点才会在出现故障时发生系统复位。否则,使用该 LAN 接口的任何程序包将暂停,并移动到另一节点(如果可能)。

磁盘保护由单独的产品提供,比如 LVM 中的 Mirrordisk/UX,或 VxVM 和相关产品中的 Veritas 镜像。另外,使用可单独购买的 EMS 磁盘监视器也可以在发生特定故障(如锁磁盘故障)时通知操作人员。有关其他信息,请参考手册《《Using High Availability Monitors 》》(HP 部件号 B5736-90046),可从 http://www.docs.hp.com->11i v2 -> HP-UX 11i v2 Enterprise Operating Environment -> Event Monitoring Service and HA Monitors 中获得。

Serviceguard 不直接响应电源故障,虽然单个群集组件掉电对于 Serviceguard 来说就像是该组件发生故障并将导致相应的切换行为。电源保护由 HP 支持的不间断电源 (UPS)(如 HP PowerTrust)提供。

程序包和服务故障响应

缺省情况下,故障切换程序包故障或程序包内服务的故障会导致运行带“stop”参数的控制脚本并关闭程序包,并在备用节点上重新启动该程序包。如果某个程序包配置为与其他程序包具有相关性,则当具有相关性的程序包发生故障时,该程序包也将发生故障。如果程序包管理器收到 EMS(Event Monitoring Service,事件监视服务)事件报告,指明不满足已配置的资源附属件,则程序包将出现故障并尝试在备用节点上重新启动。

可以指定节点在发生转移之前应该暂停(系统复位)来修改此缺省行为。可通过在程序包配置文件中设置 failfast 参数来完成此操作。

在程序包关闭过程挂起时,节点将处于一种未知状态,这时 failfast 选项可以提供快速的故障切换,在此之后,节点将在重新引导时得到清理。但是请记住,系统复位将导致该节点上的所有程序包突然暂停。

当程序包或资源出现故障时,程序包配置文件中的 failfast 参数设置将确定程序包和节点的行为。

  • 如果 SERVICE_FAIL_FAST_ENABLED 在程序包配置文件中设置为 YES,当该特定服务出现故障时,Serviceguard 将通过使用系统复位暂停此节点。

  • 如果 NODE_FAIL_FAST_ENABLED 在程序包配置文件中设置为 YES,并且程序包出现故障,Serviceguard 将暂停(系统复位)运行该程序包的节点。

注释:在很少的情况下,当指定了此行为时,Serviceguard 会在发生系统复位前先尝试重新引导系统。如果有足够的时间来刷新缓冲区高速缓存中的缓冲区,则重新引导将会成功,且不会发生系统复位。无论哪种方式,都应确保系统能在预定的时间(秒)内停止。

“程序包配置文件参数” 提供了有关选择相应的故障切换行为的建议。

服务重新启动

可以允许服务在发生故障之后在本地重新启动。要做到这一点,需要在程序包控制脚本中为每个服务指定重新启动次数。服务启动时,会在服务的环境中设置变量 RESTART_COUNT。服务在执行过程中可验证此变量以确定是否在故障之后已经重新启动,若是,它就会采取适当的措施(如清理)。

网络通信故障

群集中的一个重要因素是网络自身的运行状况。在对群集搜索进行监视时,每个节点都监听来自其他节点的心跳线消息以便确定所有节点是否都能相互通信。如果某个节点在配置好的时间段内没有监听到这些消息,就会发生节点超时,导致群集重组,并且随后如果仍然收不到心跳线消息,还会发生系统复位。

打印版本
保密声明 使用本网站表示您同意其使用条件
© Hewlett-Packard Development Company, L.P.