| 中国 |
|
|
|
![]() |
管理 Serviceguard 第 13 版 > 第 3 章 了解
Serviceguard 的软件组件程序包管理器如何工作 |
|
Serviceguard 使用程序包启动和暂停已配置的应用程序。一个程序包是服务、磁盘卷和 IP 地址的集合,该集合由 Serviceguard 进行管理,以确保其中资源的可用性。 群集中的每个节点都运行一个程序包管理器实例;驻留于群集协调器节点中的程序包管理器称为程序包协调器。 程序包协调器可完成如下工作:
所有节点上的程序包管理器可完成如下工作:
群集中可以运行以下三种不同类型的程序包: 最常见的是故障切换程序包。还有专用程序包,这些程序包可同时在多个节点上运行,因此不进行故障切换。它们通常用于管理特定故障切换程序包的资源。 此外还有两种类型的专用程序包,它们不进行故障切换并且可以同时在多个节点上运行: 系统多节点程序包和多节点程序包,前者在群集中的所有节点上运行;后者可以配置为在群集中的所有或某些节点上运行。 这些程序包并非用于常规用途,只有 HP 提供的特定应用程序才支持它们。 一种常用的系统多节点程序包随 Serviceguard 产品提供。它在安装了 VERITAS Cluster Volume Manager (CVM) 的系统上用作存储管理器(并非 HP-UX 的所有版本均支持该存储管理器;请参阅“关于 VERITAS CFS 和 CVM”)。对于 VERITAS CVM 3.5,该程序包名为 VxVM-CVM-pkg;对于 VERITAS CVM 4.1,该程序包名为 SG-CFS-pkg。它在群集中的所有活动节点上运行,并为卷管理器软件提供群集成员信息。只有利用 CVM 进行存储管理时,才配置和使用此种类型的程序包。 对于 CVM(不带 CFS),创建系统多节点程序包的过程在“准备用于 CVM 的群集”中进行介绍。对于 CVM(带有 CFS),创建系统多节点程序包的过程在“使用 VERITAS Cluster File System (CFS) 创建存储基础结构”中进行介绍。 多节点程序包在安装了 VERITAS Cluster File System (CFS) 的群集(在支持它的系统上;请参阅“关于 VERITAS CFS 和 CVM”)以及 HP 指定的其他应用程序中使用。这些程序包可以同时在若干个节点上运行,而不必在所有节点上运行。当创建群集文件系统相关性时,将使用这些程序包。 本节的其余部分将介绍标准故障切换程序包。 群集启动时,故障切换程序包将在相应的节点上启动。当程序包协调器在新节点上启动程序包时,将发生程序包故障切换。程序包的故障切换包括暂停现有的程序包(在服务、网络或资源出现故障的情况下)以及启动程序包的新实例。 故障切换如下图所示: 每个程序包都是单独配置的。 可以通过 Serviceguard Manager 或编辑程序包 ASCII 配置文件模板来创建故障切换程序包(第 6 章“配置程序包及其服务”提供了详细说明)。 然后,可以执行 cmapplyconf 命令检查该程序包并将其应用于群集配置数据库中。 还可以创建程序包控制脚本,它管理程序包服务的执行。有关详细信息, 至此,就可以运行程序包了。 程序包配置文件为程序包指定一个名称,该文件中还包括可以运行该程序包的节点的列表。 故障切换程序包按优先级顺序列出节点(即,列表中的第一个节点是优先级最高的节点)。另外,故障切换程序包文件中包含确定故障切换行为的三个参数。它们分别是 AUTO_RUN 参数、FAILOVER_POLICY 参数和 FAILBACK_POLICY 参数。 AUTO_RUN 参数(在 Serviceguard 的早期版本中称为 PKG_SWITCHING_ENABLED 参数)定义群集启动时故障切换程序包的缺省全局切换属性: 即在启动群集时 Serviceguard 能否自动启动程序包,以及 Serviceguard 是否应自动在新节点上重新启动程序包以响应故障。群集运行后,每个程序包的程序包切换属性可以通过 cmmodpkg 命令进行临时设置;在重新引导时,将恢复配置值。 参数在程序包 ASCII 配置文件中进行编码:
程序包切换包括将故障切换程序包及其相关 IP 地址移动到新系统中。新系统必须已配置好相同的子网并且运行正常,否则,程序包将无法启动。 程序包进行故障切换后,将丢失 TCP 连接。TCP 应用程序必须重新进行连接;此过程不会自动进行。请注意,如果程序包依赖于多个子网,则在程序包启动之前目标节点上的所有子网都必须是可用的。 如果程序包与资源或其他程序包具有相关性,则在目标节点上必须满足该相关性,程序包才能启动。 图 3-5 “切换程序包前” 和图 3-6 “程序包切换后” 中说明了可重新定位 IP 地址的切换。图 3-5 “切换程序包前” 显示了一个两节点群集的最初状态,程序包 1 在节点 1 上运行,程序包 2 在节点 2 上运行。用户通过所要使用的程序包的 IP 地址连接到节点。每个节点都有一个与之关联的固定的 IP 地址,每个程序包也都有一个与之关联的 IP 地址。 图 3-6 “程序包切换后” 说明了节点 1 出现故障,程序包 1 被转移到节点 2 的情况。程序包 1 的 IP 地址也随程序包一起转移到节点 2 。程序包 1 继续可用且此时运行在节点 2 上。另请注意,此时节点 2 对程序包 1 的磁盘和程序包 2 的磁盘都可进行访问。 程序包管理器选择故障切换程序包在哪个节点上运行时,依据的是包括在程序包配置文件中的优先级列表,以及此配置文件中包含的 FAILOVER_POLICY 参数。当特定节点未被识别而且需要启动程序包时,故障切换策略控制着程序包管理器如何选择运行程序包的节点。这不但适用于故障切换,而且适用于程序包的启动,包括初次启动。两个故障切换策略是 CONFIGURED_NODE(缺省值)和 MIN_PACKAGE_NODE。参数在程序包 ASCII 配置文件中进行编码:
如果将 CONFIGURED_NODE 做为故障切换策略的值,则程序包将在节点列表中拥有最高优先级的节点上启动。如果发生故障切换,程序包就会移动到表中下一个可用且优先级最高的节点上。 如果使用 MIN_PACKAGE_NODE 作为故障切换策略的值,则程序包会在当前运行其他程序包数目最少的节点上启动(请注意,这里指的不是负载最轻,检查的唯一指标是当前在节点上运行的程序包的数目)。 通过 MIN_PACKAGE_NODE 故障切换策略可以配置这样一个群集,它使您可以将一个节点作为群集的自动循环备用节点。请考虑如下四节点群集的程序包配置。请注意,全部的程序包都可以在所有的节点上运行,并具有相同的 NODE_NAME 列表。尽管示例对每个程序包以不同的顺序显示了节点名,但这一点不是必需的。 表 3-1 程序包配置数据
图 3-7 “故障切换之前的循环备用配置” 显示了群集启动时各程序包的初始状态。 发生故障时,任何程序包都将故障切换到运行程序包数目最少的节点上,
如果已经使用 CONFIGURED_NODE 故障切换策略设置了这些程序包,它们的初始状态将如图 3-7 “故障切换之前的循环备用配置” 所示,但是节点 2 的故障将导致程序包在节点 3 上启动,如图 3-9 “故障切换后的 CONFIGURED_NODE 策略程序包” 所示: 如果将 CONFIGURED_NODE 用作故障切换策略的值,则程序包将在节点列表中优先级最高的节点上启动(假定此节点正在运行,并且是群集中的一个成员)。如果发生故障切换,程序包就会移动到表中下一个可用且优先级最高的节点上。 当程序包在主节点以外的其他节点上运行时,如果主节点恢复运行,可使用 FAILBACK_POLICY 参数确定是否将程序包返回到其主节点。配置的主节点是程序包节点列表中列出的第一个节点。 用于此策略的两个值为 AUTOMATIC 和 MANUAL。参数在程序包 ASCII 配置文件中进行编码: # Enter the failback policy for this package.This policy will be used 作为示例,请考虑下面的四节点配置,其中 FAILOVER_POLICY 设置为 CONFIGURED_NODE,FAILBACK_POLICY 设置为 AUTOMATIC: 表 3-2 群集示例中的节点列表
节点 1 出现混乱,在群集重组后,pkgA 开始在节点 4 上运行: 重新引导后,节点 1 重新加入群集。此时,程序包 A 将在节点 4 上自动停止并在节点 1 上重新启动。
如果您使用的是用早期版本的 Serviceguard 生成的程序包配置文件,则建议您执行 cmmakepkg 命令打开新模板,然后将参数值复制到该模板中。在新模板中,读取在生成原始配置时不存在的选项的说明和缺省值。例如,FAILOVER_POLICY 的缺省值现在是 CONFIGURED_NODE,FAILBACK_POLICY 的缺省值现在是 MANUAL。 在 Serviceguard A.11.17 及更高版本中,需要指定程序包类型参数;对于传统程序包,PACKAGE_TYPE 是缺省值 FAILOVER。 自 Serviceguard A.11.12 版起,PKG_SWITCHING_ENABLED 参数更名为 AUTO_RUN。 NET_SWITCHING_ENABLED 参数更名为 LOCAL_LAN_FAILOVER_ALLOWED。 基本的程序包资源包括群集节点、LAN 接口和服务(服务是指应用程序中的各个进程)。所有这些资源均由 Serviceguard 直接监视。另外,可以使用“事件监视服务”注册表,通过它可配置附加的监视器。该注册表可使其他软件组件向 Serviceguard 提供对自身资源的监视。当前,其他软件产品提供的监视器包括:EMS(Event Monitoring Service,事件监视服务)高可用性监视器和 ATM 监视器。 如果程序包中配置有已监视的资源,程序包管理器就可调用资源注册程序来启动此资源的外部监视器。资源可配置为在节点进入群集时或程序包启动结束时启动。然后监视器将消息发送回 Serviceguard,由它在程序包启动前检查资源是否可用。另外,如果在程序包启动后资源变为不可用,程序包管理器可将程序包故障切换到另一个节点或采取其他操作。 可以通过 Serviceguard Manager 或在 HP-UX 命令行上执行命令 /opt/resmon/bin/resls 为程序包指定一个已监视的资源。有关其他信息,请参考 resls(1m) 的联机帮助页。 EMS(Event Monitoring Service,事件监视服务)HA Monitor 是一个单独产品 (B5736DA),可用于以程序包资源附属件的形式设置磁盘和其他资源的监视。可以使用 EMS 监视的资源属性的示例有:
一旦监视器被配置为程序包资源附属件,则当发生的事件表明资源已不再可用时,该监视器就会通知程序包管理器。此时就可以将程序包故障切换到代管节点。 EMS HA Monitor 还可用于将被监视的事件报告给目标应用程序 要确定故障切换行为,可定义一个程序包故障切换策略,它管理哪些节点将自动启动不运行的程序包。另外,可以定义故障返回策略,它确定程序包在可能时是否自动返回到其主节点。 下表说明了不同类型的故障切换行为,以及 Serviceguard Manager 或程序包配置文件中确定每种行为的设置。 表 3-3 程序包故障切换行为
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||