感谢支持
我们一直在努力

HACMP 认证学习系列,第 2 部分:计划与设计

在规划和设计高可用性集群时,必须遵守所有的客户需求。您应该充分了解硬件和网络配置,以及将要实现高可用性的应用程序。您还应该能够控制应用程序在故障情况下的行为。


了解应用程序在故障情况下的行为,对于控制集群在此类情况下应当如何反应是非常重要的。


规划和实现集群所必需的信息应该涵盖应用程序、环境、硬件、网络、存储,同时还要涵盖支持和变更过程。


本章将介绍以下 HACMP 集群主题:



  • 节点规模调整注意事项
  • 集群硬件规划
  • 软件规划
  • 存储规划
  • 灾难恢复规划

注意:规划是成功的实现的一半,但是就 HACMP 而言,如何强调正确规划的重要性都不为过。如果规划不当,您可能会在以后某个时候发现自己陷入种种限制之中,而要摆脱这些限制可能是非常痛苦的经历。因此,请保持镇定从容,并使用产品附带的规划工作表;这些工作表对于任何迁移或问题确定情形或者对于规划的文档记录都是非常有价值的。


规划注意事项


在规划高可用性集群时,您应该考虑节点、存储、网络等方面的规模调整,以便即使是在接管情况下,也能够提供应用程序正确运行所必需的资源。


规模调整:选择集群中的节点


在开始集群的实现之前,您应该了解需要多少个节点,以及应该使用什么节点类型。就应用程序所需要的资源而言,将要使用的节点类型是非常重要的。


节点的规模调整应该涵盖以下方面:



  • CPU(CPU 的数量和速度)
  • 每个节点中的随机访问存储器 (RAM) 容量
  • 磁盘存储(内部)
  • 每个节点中的通信和磁盘适配器数量
  • 节点可靠性

集群中的节点数量取决于要实现高可用性的应用程序的数量,同时还取决于所需的可用性程度。在集群中为每个应用程序准备多个备用节点可以提高应用程序的总体可用性。


注意:HACMP V5.1 集群中的最大节点数量是 32。


HACMP V5.1 支持各种各样的节点,涵盖从桌面系统到高端服务器的范围。SP 节点和逻辑分区(Logical Partition,LPAR)也受支持。有关进一步的信息,请参阅红皮书《HACMP for AIX 5L V5.1 Planning and Installation Guide》(SC23-4861-02)。


集群资源的共享基于应用程序的需求。有些节点执行的任务与要实现高可用性的应用程序并不直接相关,并且不需要与应用程序节点共享资源,应该将此类节点配置在单独的集群中以简化实现和管理。


所有的节点都应该提供足够的资源(CPU、内存和适配器),以维持所有指定的应用程序在故障转移(接管故障节点中的资源)情况下的执行。


如果可能,应该在集群中包括附加的节点,以提高集群的可用性;这还可以在执行节点故障转移、重新集成和维护操作时提供更大的灵活性。


建议使用具有相似硬件配置的集群节点,


在实现具有相互接管(mutual takeover)或并发配置的应用程序的集群时尤其是如此。这样使得分发资源和执行管理操作(软件维护等等)变得更加容易。

规模调整:存储注意事项


在最常用的配置中,要实现高可用性的应用程序需要一个共享存储空间来存储应用程序数据。该共享存储空间或者用于并发访问,或者用于使数据对接管节点上的应用程序可用(在 fail-over 情况下)。


要在集群中使用的存储应该允许每个应用程序从所有的指定节点进行共享访问。当前支持的 HACMP 共享存储技术包括 SCSI、SSA 和光纤通道(Fibre Channel.)。


根据应用程序的需求,应该将存储配置定义为非共享(“私有”)或共享存储。私有存储可以保留在内部磁盘上,并且不参与任何接管活动。


考虑到以下原因,共享存储应该提供访问控制机制:



  • 放在共享存储中的数据必须能够从可能在某个时间点运行应用程序的任何一个节点进行访问。在某些情况下,应用程序一次仅在一个节点上运行(非并发),但是在另一些情况下,必须提供对数据的并发访问。
  • 在非并发环境中,如果共享数据被错误的节点更新,这可能会导致数据破坏。
  • 在并发环境中,应用程序应该提供自己的数据访问机制,因为平台并发软件 (AIX/HACMP) 会绕过由存储控制的访问机制。

网络注意事项


在规划 HACMP 集群时,应该考虑以下方面:



  • IP 网络拓扑(路由、交换机等等)
  • IP 网络性能(速度/带宽、延迟和冗余)
  • ATM 和/或 X.25 网络配置

IP 网络用于使客户端访问运行在集群中的节点上的应用程序,以及用于在集群节点之间交换心跳信号消息。在 HACMP 集群中,心跳信号消息是通过 IP 网络和点对点(非 IP)网络进行交换的。


HACMP 旨在通过基于 TCP/IP 的网络、X.25 和 ATM 网络提供客户端的访问。

HACMP 集群规划


集群规划也许是实现成功的配置过程中最重要的步骤。HACMP 规划应该包括以下方面:



  • 硬件规划



    • 节点
    • 网络
    • 存储


  • 软件规划



    • 操作系统版本
    • HACMP 版本
    • 应用程序兼容性


  • 测试和维护规划



    • 测试过程
    • 变更管理
    • 管理操作

硬件规划


实现高可用性配置的目标是通过消除单点故障(硬件、软件和网络),以及通过屏蔽服务中断(无论是计划内还是计划外的中断),从而提供高度可用的服务。


节点规划的决策因素包括:



  • 支持的节点:计算机类型、功能、支持的适配器、电源(AC、DC、双电源与单电源等等)。
  • 连接和电缆:电缆类型、长度、接头、型号、导线管布线、电缆槽容量需求,以及可用性。

节点配置


HACMP V5.1 支持在一个集群中使用 IBM Eserver pSeries(独立和 LPAR 模式)、IBM SP 节点以及现有的 RS/6000 服务器的任何节点组合。节点必须满足内部内存、内部磁盘、可用 I/O 插槽数量和操作系统兼容性(AIX 版本)的最低要求。


要考虑的项包括:



  • 内部磁盘(磁盘数量、容量以及是否使用 LVM 镜像)
  • 共享磁盘容量和存储数据保护方法(RAID 和 LVM 镜像)
  • I/O 插槽限制及其对导致单点故障 (SPOF) 的影响
  • 对集群的客户端访问(网络适配器)
  • 其他 LAN 设备(交换机、路由器和网桥)
  • I/O 适配器和子系统冗余
  • 电源冗余

网络配置


规划群集网络时的主要目标是评估所需的冗余程度,以消除网络组件成为单点故障的可能性。应该考虑以下方面:



  • 网络:连接到多个物理网络的节点
  • 对于 TCP/IP 子系统故障:使用非 IP 网络以帮助决策过程
  • 网络接口:每个网络上的冗余网络适配器(以防止在单个网络接口发生故障情况下的资源组故障转移)

在规划集群网络配置时,必须为节点连接选择正确的组合:



  • 集群网络拓扑(交换机、路由器等等)。
  • 连接集群节点的 IP 和非 IP(点到点)网络组合和每个节点到所有网络的连接数量。

用于提供高可用性服务 IP 地址的方法:



  • 通过 IP 别名的 IP 地址接管(IP address takeover,IPAT)
  • 通过 IP 替换的 IPAT。

HACMP 网络术语


从 HACMP V5.1 开始,用于描述 HACMP 配置和操作的术语已发生了很大的变化。做出此更改是为了简化 HACMP 的总体使用和维护,同时也是为了使术语与 IBM 产品系列保持一致。


例如,在早期的 HACMP 版本中,取决于上下文,术语“适配器”可以具有不同的含义,从而使配置变得非常令人混淆和困难。


IP 标签 (IP label)


术语“IP 标签”表示与特定 IP 地址相关联的名称,此名称是在集群节点上使用的名称解析方法(DNS 或静态 – /etc/hosts)中定义的。此术语取代“主机名称”(host name),后者可能与 hostname 命令的输出产生混淆,并且可能没有与任何 IP 地址相关联。


在 HACMP V5.1 中,术语“适配器”(Adapter) 已替换如下:



  • 服务 IP 标签/地址 (Service IP Label / Address):通过其提供服务的 IP 标签/地址。此 IP 标签/地址可能与单个节点绑定,也可能由多个节点共享,并且 HACMP 保持其高度可用。
  • 通信接口 (Communication Interface):支持 TCP/IP 协议并由其基本 IP 地址表示的物理接口。
  • 通信设备 (Communication Device):表示点到点非 IP 网络连接的一端的物理设备,例如 /dev/tty1、/dev/tmssa1、/dev/tmscsi1 和 /dev/hdisk1。
  • 通信适配器 (Communication Adapter):用于提供高度可用的通信链路的 X.25 适配器。

服务 IP 地址/标签 (Service IP address/label)


服务 IP 地址是用于客户端访问的 IP 地址。此 IP 地址(及其关联的标签)由 HACMP 监视,并且是资源组的一部分。


存在两种类型的服务 IP 地址(标签):



  • 共享服务 IP 地址(标签):可以配置在多个节点上的 IP 地址,并且是一次只能在一个节点上处于活动状态的资源组的一部分。
  • 与节点绑定的服务 IP 地址(标签):只能配置在一个节点上(不由多个节点共享)的 IP 地址。通常,此类服务 IP 地址与并发资源组相关联。

服务 IP 地址在 HACMP 已启动并且关联的资源组处于在线状态时变得可用。


HACMP 通信接口 (HACMP communication interface)


HACMP 中的通信接口定义是以下内容的逻辑分组:



  • 逻辑网络接口一个名称,AIX 将某个物理网络适配器端口(例如,en0)解析为此名称。
  • 服务 IP 地址是一个 IP 地址,将通过该 IP 地址提供诸如应用程序等服务,并且客户端节点将通过该 IP 地址进行通信。
  • 服务 IP 标签是映射到服务 IP 地址的标签。

通信接口指的是基于 IP 的网络和网络适配器。


连接到公共物理网络的网络适配器组合为 HACMP 所使用的逻辑网络。


每个网络适配器能够承载多个 TCP/IP 地址。在配置集群时,您要定义 HACMP 将监视的 IP 地址(基本或启动 IP 地址)和 HACMP 将保持其对 HACMP 高度可用的 IP 地址(服务 IP 地址)。


HACMP 中的心跳信号通过通信接口进行传递。HACMP 使用 RSCT 子系统的心跳检测功能(通过 UDP)来监视其网络接口和 IP 地址。每当 HACMP 服务在该节点上启动,HACMP 就将 ODM 中定义和存储的网络拓扑传递给 RSCT,并且 RSCT 将向 HACMP 提供故障通知。


HACMP 通信设备 (HACMP communication device)


HACMP 还提供点对点非 IP 网络的监视。点对点网络的两端都是 AIX 设备(在 /dev 目录中定义)。这些设备是通信设备,并包括串行 RS232 连接、目标模式 SCSI、目标模式 SSA 和磁盘检测信号连接。


点对点网络也由 RSCT 监视,并且 HACMP 使用它们的状态来区分节点故障和 IP 网络故障。


例如,通过磁盘的心跳检测使用磁盘设备名称(例如,/dev/hdisk2)作为在连接的每一端配置到 HACMP 的设备。


建议此类网络至少要在集群中的任何两个节点之间配置一个非 IP 网络。


在磁盘心跳检测的情况下,建议使用一个点对点网络,此网络由每个物理机箱的每个节点对的一个磁盘组成。不能将一个物理磁盘用于两个点对点网络。

通信适配器和链路 (Communication adapter and link)


可以将以下通信链路定义为 HACMP 中的资源:



  • LAN 网络适配器 (ent*) 上配置的 SNA
  • X.25 适配器上配置的 SNA
  • 本机 X.25 链路

HACMP 将这些链路作为资源组的一部分进行管理,从而确保高可用性通信链路。在物理网络接口故障、X.25 链路故障或节点故障的情况下,高度可用的通信链路(连同相同资源组中的所有资源一起)将被迁移到同一个节点或接管节点上的另一个可用的适配器。


IP 别名


IP 别名是通信(网络)接口上配置的除基本 IP 地址以外的 IP 地址。IP 别名是受 HACMP 支持的一个 AIX 功能。AIX 支持在每个通信接口上使用多个 IP 别名。适配器上的每个 IP 别名可以在单独的子网上。


AIX 还允许为接口配置具有不同子网掩码的 IP 别名;HACMP 尚不支持此功能。


IP 别名在 HACMP 中同时用作用于 IP 地址接管的服务和非服务地址,以及用于心跳配置。


网络接口功能 (Network interface function)


对于 IP 网络,建议您在每个节点上为每个网络配置多个通信接口。那些通信接口将分别具有特定的作用,具体取决于 HACMP 集群的状态。



  • 服务接口 (Service Interface)

服务接口是配置了一个或多个服务 IP 地址(标签)的通信接口。取决于为每个网络定义的 IP 地址接管 (IPAT) 方法,将在基本 IP 地址之外添加服务 IP 地址(通过别名的 IPAT),或者服务 IP 地址将取代通信接口的基本(启动)IP 地址。此接口用于提供对运行在该节点上的应用程序的访问。服务 IP 地址由 HACMP 通过 RSCT 心跳信号进行监视。



  • 启动接口 (Boot Interface)

这是由在 AIX 配置中定义的基本(启动)IP 地址表示的通信接口。如果使用了通过 IP 别名进行的心跳检测,则 HACMP 将不监视此 IP 地址,而是通过 HACMP 在启动时分配的 IP 别名来监视通信接口。


启动接口不传输任何客户端流量;然而,如果服务接口失败,HACMP 将把服务 IP 地址转移到非服务接口上。如果某个节点发生故障,接管节点上的另一个接口将在执行资源组故障转移时配置服务 IP 地址。


注意:对于每个网络,一个节点可以具有零到七个非服务接口。在同一个网络上使用多个非服务接口可以消除通信接口的单点故障。



  • 持久节点 IP 标签 (Persistent Node IP Label)

持久节点 IP 标签是一个 IP 别名,可以将其分配给集群网络上的某个特定节点。持久节点 IP 标签:




    • 与节点绑定(始终保持在同一个节点上)。
    • 能够在已经定义了某个服务或非服务 IP 标签的网络适配器上共存。
    • 具有不需要在该节点上安装附加物理网络适配器的优点。
    • 不属于任何资源组。

分配持久节点 IP 标签可以提供一个与节点绑定的 IP 地址,并且对于管理目的来说非常有用,因为到持久节点 IP 标签的连接始终会确定该特定的集群节点,即使 HACMP 服务没有在该节点上启动时也是如此。


注意:可以在每个节点上为每个网络配置一个持久节点 IP 标签(地址)。例如,如果有一个连接到 HACMP 中定义的两个网络的节点,可以通过两个分别用于每个网络的持久 IP 标签(地址)来确定该节点。


持久 IP 标签是在 HACMP 配置中定义的,并在 HACMP 第一次在每个节点上启动时变得可用。一经配置,持久 IP 标签(地址)将在配置它们的适配器上保持可用,即使 HACMP 已在节点上停止或节点已重新启动时也是如此。


可以在以下类型的基于 IP 的网络上创建持久节点 IP 标签:




    • 以太网
    • 令牌环网
    • FDDI 网
    • ATM 局域网模拟器

限制:不能在 SP 交换机、ATM 传统 IP 或非 IP 网络上配置持久节点 IP 标签。


持久 IP 标签的行为如下:




    • 如果某个配置了服务 IP 标签的网络适配器发生故障,并且该网络适配器上还定义了一个持久标签,则会将持久 IP 标签(地址)连同服务 IP 标签(地址)一起转移到同一个非服务接口上。
    • 如果指定节点上用于集群网络的所有网络适配器均发生故障,则持久节点 IP 标签将变得不可用。持久节点 IP 标签始终保持在同一个网络上,并保持在同一个节点上;它不会在集群中的节点之间移动。

用于心跳检测的 IP 别名 (IP aliases used for heartbeat)


这些 IP 地址是从专用的不可路由地址池中分配的,并用于监视通信接口,而不需要更改通信接口的基本(启动)IP 地址。


这在某些情况下是非常有用的,例如,当更改每个节点上的网络适配器的基本 IP 地址不适宜(因为它们是在 AIX 中定义的),并且那些地址不符合 HACMP 要求(它们在同一个子网中,因此不能监视网络适配器)的时候。


为此目的,HACMP 提供了通过 IP 别名的进行心跳检测的方法。


网络类型


在 HACMP 中,“网络”这个术语用于定义一个逻辑实体,此逻辑实体将用于集群中的节点间通信和用于客户端访问的通信接口和设备分组在一起。可以将 HACMP 中的网络定义为 IP 网络和非 IP 网络。


IP 网络和非 IP 网络均用于在节点之间交换心跳信号(“Keep Alive”)消息。通过这种方式,HACMP 维护有关集群节点及其各自的通信接口和设备状态的信息。


HACMP V5.1 中支持的 IP 网络类型包括:



  • 以太网 (ether)
  • 令牌环网 (token)
  • FDDI 网 (fddi)
  • SP Switch 和 SP Switch2 网 (hps)
  • ATM 网 (atm)

下列 IP 网络类型不受支持:



  • 串行光纤通道转换器网 (SOCC)
  • 串行线路 IP 网 (SLIP)
  • 光纤通道交换网 (FCS)
  • 802.3
  • IBM 高性能交换网 (HPS)

非 IP 网络是两个集群节点之间的点对点连接,HACMP 将其用于控制消息和心跳信号。在 IP 网络(或节点上的 TCP/IP 子系统)发生故障的情况下,这些网络可以为 HACMP 提供附加级别的保护。


HACMP 中的非 IP(基于设备)网络支持下列设备:



  • 目标模式 SCSI (tmscsi)
  • 目标模式 SSA (tmssa)
  • 磁盘心跳信号 (diskhb)
  • 串行 RS232

注意:在 AIX 5L V5.1 和 AIX 5L V5.2 中,HACMP 现在还支持将以太网聚合 (Etherchannel) 通信接口用于 IP 地址接管。不支持将 Etherchannel 用于:



  • 硬件地址接管
  • PCI 热插拔

此外,在当前版本中,HACMP 不支持 AIX 虚拟 IP 功能 (VIPA) 和 IPV6。

选择 IP 地址接管 (IPAT) 方法


在实现集群时要做出的关键决策之一是资源组和与之关联的服务 IP 地址的行为。


由于 HACMP 在大多数时间都用于保护独立的非并发应用程序,因此必须选择将要用于提供高度可用的服务 IP 地址的方法。


在启动应用程序或将其连同关联的资源组一起移动到另一个节点时,可以通过两种方式配置服务 IP 地址:



  • 通过替换通信接口的基本(启动时)IP 地址;

此方法称为“通过 IP 替换的 IP 地址接管 (IPAT)”。



  • 通过为通信接口配置一个除现有 IP 地址之外的附加 IP 地址;此方法称为“通过 IP 别名的 IP 地址接管”。

HACMP V5.1 中的缺省 IPAT 方法是通过别名(通过别名的 IPAT)。要更改此缺省行为,必须使用 HACMP 扩展配置菜单来更改网络属性。


IP 地址接管


IP 地址接管是一种恢复 IP 地址标签的机制,其方法是在初始物理网络适配器发生故障时,将服务 IP 标签转移到另一个节点上的另一个物理网络适配器。IPAT 确保用于向客户端节点提供服务的 IP 地址(标签)保持可用。

IPAT 和服务 IP 标签


可以将两种 IPAT 方法和这些方法控制服务 IP 标签的方式作如下解释:



  • 通过 IP 别名的 IP 地址接管

将服务 IP 地址/标签用作某个现有通信接口的别名,而不更改(替换)该接口的基本地址。


HACMP 使用 ifconfig 命令来执行此操作。


注意:在此配置中,节点上定义的所有基本(启动)IP 地址/标签必须配置在不同的子网上,并且还要与服务 IP 地址(标签)不同。此方法还可以节省硬件,但是需要额外的子网。图 1。


图 1 通过 IP 别名的 IPAT


HACMP 使用 AIX 的 IP 别名网络功能来支持不同类型的网络上的 IP 地址接管。通过 IP 别名的 IPAT 可以在某些类型的网络上使用无故 ARP (gratuitous ARP) 功能。


通过 IP 别名的 IPAT 使单个网络适配器可以支持多个服务 IP 地址(标签)。因此,同一个节点可以同时承载多个资源组,而不会将资源组的数量限制为可用的通信接口的数量。


相对于通过 IP 替换的 IPAT,通过别名的 IPAT 提供了以下优点:




    • 通过 IP 别名的 IP 地址接管比通过 IP 替换的 IPAT 速度更快,因为与在同一个接口上添加一个 IP 别名相比,替换 IP 地址要花显著更长的时间。
    • IP 别名允许多个服务标签在同一个网络接口上共存,因此可以在集群中使用更少的物理网络接口卡。

注意:在 HACMP V5.1 中,通过 IP 别名的 IPAT 是用于保持服务 IP 标签高度可用的缺省机制。



  • 通过 IP 替换的 IP 地址接管

服务 IP 地址替换网络接口上的现有(启动/基本)IP 地址。


使用此方法,同一网络接口上一次仅配置有一个 IP 地址/标签。


注意:在此配置中,服务 IP 地址必须与其中一个节点的通信接口启动地址在同一个子网上,而备用通信接口的基本 IP 地址必须在一个不同的子网上。此方法还可以节省子网,但是需要额外的硬件。


图 2 通过 IP 替换的 IPAT


如果包含服务 IP 地址的通信接口发生故障,在使用通过 IP 替换的 IPAT 时,HACMP 将把服务 IP 地址转移到在同一个节点并在同一网络上的另一个可用接口;在此情况下,关联的资源组不受影响。


如果同一个节点上没有可用的接口,则将资源组连同服务 IP 标签一起转移到另一个具有可用通信接口的节点上。


在使用通过 IP 替换的 IPAT(也称为“传统 IPAT”)时,还可以配置硬件地址接管 (HWAT)。硬件地址接管的实现方式是使用本地管理地址(locally administered address,LAA)来屏蔽通信接口的本机 MAC 地址,从而确保客户端上的 ARP 缓存中的映射保持不变。

网络安全规划


规划网络安全性对于避免集群节点上未经授权的访问也是非常重要的。


从 HACMP V5.1 开始,通过为节点之间所有与 HACMP 配置相关的通信提供公共通信基础设施(守护进程),从而引入了一种新的安全机制。


新的集群通信守护进程 (clcomdES) 的引入在 HACMP 集群中提供了增强的安全性,同时还加快了与配置相关的操作速度。


存在三个级别的通信安全性:



  • 标准级别

    • 缺省安全级别。
    • 直接由集群通信守护进程 (clcomdES) 实现。
    • 使用 HACMP ODM 类别和 /usr/es/sbin/cluster/rhosts 文件来确定合法伙伴。

  • 增强级别

    • 在 SP 集群中使用。
    • 利用基于 Kerberos 提供的第三方身份验证方法的增强身份验证方法。

  • 虚拟专用网(Virtual Private Network,VPN)

    • VPN 是在 AIX 中配置的。
    • 然后将 HACMP 配置为使用 VPN 来进行所有与节点间配置相关的通信操作。

通过使用集群安全通信子系统,HACMP 消除了对每个集群节点上的 /.rhosts 文件或 Kerberos 配置的需要。


但是,可能仍然需要 /.rhosts 来支持需要这种远程通信机制的应用程序的操作。


注意:并非所有集群通信都通过 clcomdES 进行保护;其他守护进程具有自己的通信机制(不是基于“r”命令)。



  • 集群管理器 (clstrmgrES)
  • 集群锁守护进程 (cllockdES)
  • 集群多对等扩展通信守护进程 (clsmuxpdES)

clcomdES 用于集群配置操作,例如集群同步、集群管理 (C-SPOC) 和动态重新配置 (DARE) 操作。


通过使用“最低权限”原则,集群通信守护进程 clcomdES 提供安全的远程命令执行和 HACMP ODM 配置文件更新。


因而,只有存在于 /usr/es/sbin/cluster/ 中的程序才以 root 身份运行;其他所有程序都以“nobody”用户身份运行。除了 clcomdES 以外,还使用了以下程序:



  • cl_rsh 是集群远程 Shell 执行程序。
  • clrexec 用于以 root 身份运行特定的危险命令,例如修改 /etc 目录中的文件。
  • cl_rcp 用于复制 AIX 配置文件。

这些命令硬编码在 clcomdES 中,不支持由用户运行。


集群通信守护进程 (clcomdES) 具有以下特征:



  • 由于集群通信不需要标准 AIX“r”命令,因此可以消除对 /.rhosts 文件的依赖性。因而,即使在“标准”安全模式下,集群安全性也得到了增强。
  • 为其他节点在本地节点(从中执行配置变更和同步的节点)上的 ODM 副本提供可靠的缓存机制。
  • 限制可在远程节点上作为 root 身份执行的命令(只有 /usr/es/sbin/cluster 中的命令才以 root 身份运行)。
  • clcomdES 从 /etc/inittab 启动,并由系统资源控制器(system resource controller,SRC)子系统进行管理。
  • 提供自己的心跳检测机制,并发现活动的集群节点(即使是在集群管理器或 RSCT 未运行的情况下)。

注意:ClcomdES 为诸如 clverify、godm、rsh 和 rexec 等各种 HACMP 服务提供了传输机制。


针对传入连接的 clcomdES 身份验证过程的基础是对照以下文件检查节点的身份:



  • HACMPadapter ODM 类别(此类别中定义的 IP 标签)
  • HACMPnode ODM(用作集群中节点的通信路径的 IP 地址/标签)
  • /usr/sbin/cluster/etc/rhosts 文件

如果 /usr/sbin/cluster/etc/rhosts 文件丢失,或者未包含针对远程发起节点的条目(IP 地址或可解析的 IP 标签),则不允许进入的连接。


如果 HACMPnode、HACMPadapter ODM 类别和 /usr/sbin/cluster/etc/rhosts 文件为空,则 clcomdES 假设集群正在进行配置,并接受传入的连接,然后在初始配置完成后,将对等节点的 IP 标签(地址)添加到 /usr/sbin/cluster/etc/rhosts 文件。


如果请求连接的 IP 地址与上述位置(HACMPadapter、HACMPnode 和 /usr/es/sbin/cluster/etc/rhosts)中的某个标签匹配,则 clcomdES 将反过来连接到请求节点,并要求提供 IP 标签(主机名称);如果返回的 IP 标签(主机名称)与请求 IP 地址匹配,则身份验证成功完成。


注意:如果 /usr/es/sbin/cluster/etc/rhosts 文件中存在不可解析的标签,则拒绝所有自远程节点的 clcomdES 连接。

关于作者
Dino Quintero 是一个高级认证 IT 咨询师,在纽约的 ITSO 工作。在进入 ITSO 之前,他是 Enterprise Systems Group 的一名性能分析师,同时也是 IBM 全球服务部的一名灾难恢复架构师。他的专业覆盖灾难恢复和 p 系列主机的集群解决方案。目前,他正带领一个团队负责提供全球的 p 系列集群解决方案服务以及相关的授课工作。

HACMP 心跳检测


与在许多其他类型的集群中一样,心跳检测用于监视网络接口、通信设备和 IP 标签(服务、非服务和持久 IP 标签)的可用性,从而监视节点的可用性。


从 HACMP V5.1 开始,心跳检测完全基于 RSCT 拓扑服务(因而 HACMP V5.1 只是“Enhanced Scalability”版本;使用直接由集群管理器守护进程监视的传统网络接口模块 (NIM) 的心跳检测已不再使用)。


执行心跳检测的方法是通过每个通信接口或设备在集群中的节点之间交换消息(Keep Alive 数据包)。


每个集群节点以特定间隔向其他集群节点发送心跳信号消息,并预期以特定间隔接收来自对应节点的心跳信号消息。如果消息接收停止,则 RSCT 将此情况视为故障,并告诉 HACMP,后者将采取适当的恢复操作。


心跳信号消息可通过以下网络发送:



  • TCP/IP 网络
  • 点对点非 IP 网络

为了防止集群分割(split brain),HACMP 必须能够区分节点故障和 TCP/IP 网络故障。TCP/IP 网络故障可能由有故障的网络元素(交换机、集线器和电缆)导致;在这种情况下,集群中的节点不能通过 IP 发送和接收检测信号消息(Keep Alive,KA),因此每个节点认为对等节点发生了故障,并尝试获取资源。这具有潜在的数据破坏风险,在使用并发资源时尤其是如此。


非 IP 网络是节点之间的直接连接(点对点),并且不使用 IP 来进行检测信号消息交换,因此不太容易受到 IP 网络元素故障的影响。如果使用了这些网络类型,则在 IP 网络发生故障的情况下,节点仍然能够交换消息,因此得出的判断是网络故障,从而不执行任何资源组活动。


为了避免 HACMP 中发生分割,我们建议:



  • 配置冗余网络(IP 和非 IP)
  • 同时使用 IP 和非 IP 网络。

若要了解一个建议的两节点集群配置,图 3。


图 3 HACMP 集群中的信号检测
 

通过磁盘的信号检测


通过磁盘的心跳检测 (diskhb) 是 HACMP V5.1 中引入的新功能,旨在提供预防集群分割的附加保护和简化的非 IP 网络配置,尤其是用于太难或无法实现 RS232、目标模式 SSA 或目标模式 SCSI 连接的环境。


此类网络可以使用任何类型的共享磁盘存储(光纤通道、SCSI 或 SSA),只要用于交换 KA 消息的磁盘是 AIX 增强并发卷组的一部分。用于信号检测网络的磁盘并不专门用于此目的;可以将它们用于存储应用程序共享数据(有关更多信息,请参见图 3)。


客户提出了使用目标模式的光纤通道连接请求,但是由于异构(非标准发起设备和目标功能)的 FC 环境(适配器、存储子系统、SAN 交换机和集线器),此方法很难实现和支持。


通过使用共享磁盘来交换消息,非 IP 网络的实现更加可靠,并且不依赖所使用的硬件类型。


此外,在 SAN 环境中,当使用光纤来连接设备时,这种非 IP 连接的长度具有与 SAN 相同的距离限制,


因而允许实现超长的点对点网络。


通过将某个磁盘定义为增强的并发卷组的一部分,该磁盘的一部分(扇区)将不用于任何 LVM 操作,此磁盘部分将用于在两个节点之间交换消息。


使用通过磁盘的信号检测的规范如下:



  • 一个磁盘可用于两个节点之间的一个网络。同时在两个节点上使用 LVM 分配的物理卷 ID(physical volume ID,PVID)来标识要使用的磁盘。
  • 用于磁盘信号检测网络的建议配置是在每个存储机箱中将一个磁盘用于一对节点。
  • 要求将要使用的磁盘是某个增强并发卷组的一部分,虽然该卷组不一定要是活动的或者是某个资源组(并发或非并发)的一部分。唯一的限制在于,必须同时在两个节点上定义该卷组(volume group,VG)。

注意:增强并发卷组的集群锁机制不使用保留磁盘空间来进行通信(“传统”版本的 clvmd 要使用保留磁盘空间);它改为使用 RSCT 组服务。


通过 IP 别名的心跳检测


对于 IP 网络,现在引入了一个新的心跳检测功能:通过 IP 别名的信号检测。此功能是为不能或不适宜更改通信接口的基本 IP 地址的集群而提供的。


用于信号检测的 IP 别名是在 HACMP 服务启动时在现有 IP 地址之外配置的。用于此目的的 IP 地址必须与现有的 IP 地址在完全不同的子网中,并且不应该定义用于任何名称解析(/etc/hosts、BIND 等等)。此配置不需要任何附加的可路由子网。


与使用基本/启动 IP 地址来交换心跳信号消息不同,RSCT 使用 HACMP 定义的 IP 别名来为每个通信接口建立通信组(检测信号环)。


注意:在使用通过 IP 别名的心跳检测时,通信接口的基本/启动 IP 地址由不由RSCT 拓扑服务(从而由 HACMP)进行监视。通信接口将通过所分配的 IP 别名接受监视。


即使使用此技术,HACMP 仍然要求网络上的所有接口(所有节点中的接口)能够彼此通信(能够彼此看到对方的 MAC 地址)。


用于 IP 别名的子网掩码与用于服务 IP 地址的子网掩码相同。在定义用于信号检测的 IP 地址时,必须指定要用于信号检测的起始地址,并且必须确保有足够多与网络上使用的现有子网不发生冲突的子网可用(节点中的每个物理通信接口对应一个子网)。


例如,在一个三节点的集群中,所有节点都有三个定义在同一网络上的通信接口,则需要三个不可路由的子网。


假设所有节点都有三个以太网适配器(en0、en1 和 en2),子网掩码属于 C 类,并且要用于通过 IP 别名的信号检测的起始 IP 地址为 172.16.100.1,则为每个以太网适配器(通信接口)分配的别名将如表 1 所示。另请参见图 4 和图 5。


表 1 用于信号检测的 IP 别名























适配器/节点 节点 1 节点 2 节点 3
en0 172.16.100.1 172.16.100.2 172.16.100.3
en1 172.16.101.1 172.16.101.2 172.16.101.3
en2 172.16.102.1 172.16.102.2 172.16.102.3


用于通过 IP 别名的心跳检测的地址在集群同步过程中存储在 HACMPadapter ODM 类中。

图 4 信号检测别名地址分配


在 HACMP V5.1 中,可以配置通过 IP 别名的心跳检测,以便为使用任一种类型的 IPAT(通过 IP 别名或通过 IP 替换)的网络建立基于 IP 的检测信号环。所配置的 IPAT 类型将决定 HACMP 处理服务 IP 地址(标签)的方式:



  • 对于通过 IP 替换的 IPAT,服务标签将替换通信接口的基本(启动)地址,而不是替换心跳检测别名。
  • 对于通过 IP 别名的 IPAT,服务标签将用作通信接口以及基本 IP 地址的别名以及心跳检测别名。

通过 IP 别名的信号检测被定义为一个网络 (HACMP) 特征,并且是 HACMP 拓扑定义的组成部分。要启用此功能,用户必须在 HACMP 网络定义中指定起始地址。


要设置此特征,必须使用扩展 SMIT 菜单(针对集群拓扑)。可以在定义网络时定义此特征,或者可以在以后更改。


图 5 IP 别名管理


有关此主题的更多信息,请参阅红皮书《HACMP for AIX 5L V5.1 Planning and Installation Guide,》(SC23-4861-02) 中的第 3 章“Planning Cluster Network Connectivity”。

共享存储配置


大多数 HACMP 配置都需要共享存储。支持从多个主机进行访问的 IBM 磁盘子系统包括 SCSI、SSA、ESS 和 FAST。


还可以使用第三方 (OEM) 的存储设备和子系统,尽管其中大多数都没有直接经过 IBM 的 HACMP 使用认证。


有关这些设备的信息,请访问制造商各自的网站。


表 2 列出了可在 HACMP 集群用于共享访问的部分 IBM 存储设备(最常用的)。


表 2 外部存储子系统(此处列出的一些型号已经过时或者改变,请在正式设计时在 IBM 网站上进行查询或者咨询相关的技术支持)











IBM 7133 SSA 磁盘子系统,型号 D40 和 T40(支持最大 72.8 GB 的磁盘模块,每个 SSA 环中最多包括八个节点)。
IBM Enterprise Storage Server (ESS),型号 E10、E20、F10 和 F20(通过 IBM FC/FICON 使用 SCSI 和光纤通道接口最多可以支持八个节点,功能代码:3021、3022 和 3023)
IBM 2105-800 (ESS) Total Storage Enterprise Storage Server(FS 和 SCSI)IBM 7133 SSA 磁盘子系统,型号 D40 和 T40(支持最大72.8 GB 的磁盘模块,每个 SSA 环最多可包括八个节点)。
IBM Total Storage FAStT,型号 200、500、600、700 和 900。


HACMP 还支持共享磁带驱动器(SCSI 或 FC)。共享磁带可通过 SCSI 或 FC 进行连接。不支持并发模式的磁带访问。


有关部分受支持的磁带子系统,请参见表 3。


表 3 磁带驱动器支持















IBM 3583 Ultrium 可伸缩磁带库,型号 L18、L32 和 L72
IBM 3584 Ultra? 可伸缩磁带库,型号 L32 和 D32
IBM Total Storage Enterprise 3590 磁带驱动器,型号 H11
IBM Magstar? 3590 磁带驱动器,型号 E11 和 B11
IBM 3581 Ultrium Tape Autoloader,型号 H17 和 L17
IBM 3580 Ultrium 磁带驱动器,型号 H11 和 L11


有关受支持的存储和磁带驱动器的更新列表,请访问 IBM 网站,地址为:http://www-1.ibm.com/servers/eserver/pseries/ha/


还可以为 HACMP 配置非 IBM 共享存储子系统(磁盘和磁带子系统)。有关非 IBM 存储的列表,请参见各制造商的网站,以及 Availant 网站:http://www.availant.com/


共享 LVM 要求


HACMP 集群的共享 LVM 规划取决于共享磁盘访问方法和共享磁盘设备的类型。应该为共享 LVM 考虑的元素包括:



  • 数据保护方法
  • 存储访问方法
  • 存储硬件冗余

注意:HACMP 本身不提供存储保护。存储保护是通过以下途径提供的:



  • AIX(LVM 镜像)
  • 硬件 RAID

在本部分中,我们将提供有关存储级别的数据保护方法的信息,同时还将讨论 LVM 共享磁盘访问模式。



  • 非并发
  • “传统”并发(HACMP 并发逻辑卷管理器 – clvm)
  • 增强并发模式 (ECM),AIX 5L V5.1 及更高版本中的一个新选项

非并发、增强并发和并发


在非并发访问配置中,一次仅有一个集群节点可以访问共享数据。如果包含共享磁盘空间的资源组移动到另一个节点,则新节点将激活磁盘,并检查卷组、逻辑卷和文件系统的当前状态。


在非并发配置中,磁盘可共享为:



  • 原始物理卷
  • 原始逻辑卷
  • 文件系统

在并发访问配置中,磁盘上的数据并发地对所有节点可用。此模式不支持文件系统(JFS 或 JFS2)。


快速磁盘接管


HACMP V5.1 利用了新的 AIX 增强并发 LVM。在 AIX 5L V5.2 中,必须以增强并发模式创建任何新的并发卷组。


只有在 AIX 5L V5.2 中,增强并发卷组还可以用于文件系统(共享或非共享)。在故障转移情况下,快速磁盘接管选项利用此功能来加速接管共享文件系统的过程。


增强的并发卷组在资源组中的所有节点上启用,数据访问由 HACMP 进行协调。只有资源组在其上处于活动状态的节点才会以“并发主动”(concurrent active) 模式启用该卷组;


其他节点将以“被动”(passive) 模式启用该卷组。在“被动”模式下,不允许对该卷组执行高级操作。


注意:在将资源组用于快速磁盘接管选项时,拥有冗余网络和非 IP 网络是极其重要的。这将避免在“split brain”情况下发生数据破坏(毕竟,卷组处于并发模式)。


RAID 和 SSA 并发模式


RAID 并发模式卷组在功能上已过时,但是由于增强的并发模式提供了附加的功能,RAID 并发 VG 将在一段时间内继续受支持。RAID 和 SSA 并发模式卷组均受 HACMP V5.1 的支持,但是具有一些重要的限制:



  • 如果并发资源组包括运行 64 位内核的节点,则要求所有卷组都处于增强并发模式。
  • SSA 并发模式在 64 位内核上不受支持。
  • 带有 32 位内核的 SSA 磁盘仍然使用 SSA 并发模式。
  • 不能将 C-SPOC 实用程序用于 RAID 并发卷组。必须将这些卷组转换为增强并发模式(否则,AIX 将它们视为非并发的)。
  • 在 AIX 5L V5.1 中,仍然可以创建 SSA 并发 VG(使用 32 位内核),但是在 AIX 5L V5.2 中,不能创建新的 HACMP 并发 VG;必须以增强并发模式创建所有的新 VG。

LVM 需求


AIX 的逻辑卷管理器(Logical Volume Manager,LVM)组件通过协调物理和逻辑存储之间的数据映射来管理存储。逻辑存储可以扩展和复制,并且可以跨越多个物理磁盘和机箱。


主要的 LVM 组件包括:



  • 物理卷

一个物理卷(physical volume,PV)表示 AIX 所看到的单个物理磁盘 (hdisk*)。物理卷划分为物理分区(physical partition,PP),后者表示 LVM 使用的物理分配单元。



  • 卷组

卷组(volume group,VG)是一组物理卷,AIX 将其视为一个连续的可寻址磁盘区域。在 HACMP 中,卷组及其所有逻辑卷可以属于某个共享资源组。一个卷组不能属于多个资源组(resource group,RG)。



  • 物理分区

物理分区 (PP) 是 VG 中的分配单元。PV 划分为 PP(在将 PV 添加到 VG 时),并且 PP 用于 LV(每个逻辑分区 (LP) 分配一个、两个或三个 PP)。



  • 卷组描述符区域(Volume Group Descriptor Area,VGDA)

VGDA 是磁盘上的一个区域,其中包含有关该卷组中的存储分配的信息。


对于单磁盘卷组,存在两个 VGDA 副本。对于双磁盘 VG,存在三个 VGDA 副本:一个磁盘上有两个 VGDA,另一个磁盘上有一个 VGDA。对于由三个或更多 PV 组成的 VG,卷组中的每个磁盘上存在一个 VGDA。



  • 定额(Quorum)

要使某个活动的 VG 维持活动状态,必须有一个 VGDA“定额”(50% + 1) 可用。此外,如果某个 VG 将定额选项设置为“off”,当一个 VGDA 副本丢失时,则无法将其激活(无“force”选项)。如果关闭了定额,系统管理员必须知道该 VG 的映射,以确保数据完整性。



  • 逻辑卷

逻辑卷(logical volume,LV)是一组逻辑分区,AIX 使其可作为单个存储实体来使用。逻辑卷可以用作原始存储空间,或用作文件系统的存储。在 HACMP 中,属于某个 VG 的逻辑卷已经属于某个资源组,并且不能属于另外一个资源组。



  • 逻辑分区

逻辑分区(logical partition,LP)是逻辑卷的空间分配单元,并且是物理分区的逻辑视图。使用 AIX LVM,可以将逻辑分区映射到一个、两个或三个物理分区,以实现 LV 镜像。


注意:虽然可以将 LVM 镜像用于任何类型的磁盘,但是在使用 IBM 2105 Enterprise Storage Servers 或 FAStT 存储服务器时,您可以忽略此选项。这些存储子系统(以及某些非 IBM 存储子系统)通过使用各种级别的 RAID 来提供自己的数据冗余机制。



  • 文件系统

文件系统(file system,FS)实际上是用于存储文件和目录的简单数据库。


AIX 中的文件系统存储在单个逻辑卷上。文件系统(JFS 或 JFS2)的主要组件是包含数据、文件系统日志和文件系统设备驱动程序的逻辑卷。HACMP 同时支持使用 JFS 和 JFS2 作为共享文件系统,不过要注意,日志必须在一个单独的逻辑卷上(JFS2 可能还有内联日志,但这在 HACMP 中不受支持)。

卷组的强制启用


HACMP V5.1 提供了一个新功能,即在节点上强制启用某个卷组的选项。在接管过程中,如果正常启用命令在该卷组上失败(缺乏定额),则在接管节点上启用该卷组之前,HACMP 将确保该 VG 中每个逻辑卷的每个逻辑分区至少有一个有效副本可用。


只要存在一个有效的数据副本可用,强制启用某个卷组使您可以将卷组置于在线并保持在线(作为资源组的一部分)。应该仅对具有镜像逻辑卷的卷组使用强制启用选项,并慎用此功能以避免创建分割的集群。


注意:对于卷组中用于强制启用选项的逻辑卷,应该指定非常严格的分配策略。这样,LVM 将确保逻辑卷的副本始终在单独的磁盘上,并提高强制启用操作一个或多个磁盘发生故障后的成功机会。


在属于资源组的 VG 失去一个或多个磁盘 (VGDA) 情况下的接管中,此选项非常有用。如果不使用此选项,资源组将不会在接管节点上激活,从而使应用程序不可用。


当在接管情况下使用卷组的强制启用选项时,HACMP 首先尝试正常的 varyonvg 命令。如果此尝试由于缺乏定额而失败,则在尝试强制将卷置于在线之前,HACMP 将检查数据的完整性,以确保卷组中所有的数据至少存在一个可用的副本。如存在,则运行 varyonvg –f 命令;如不存在,该卷组保持离线,并且资源组将处于错误状态。


注意:用户仍然可以使用打破定额 (quorum buster) 的磁盘或自定义脚本来强制启用某个卷组,但是 HACMP 中新的强制启用属性将自动化此操作,客户实施的过程现在可以变得轻松了。


有关更多信息,请参见《HACMP for AIX 5L V5.1 Planning and Installation Guide》SC23-4861-02 中的第 5 章“Planning Shared LVM Components”。


选择磁盘技术


HACMP V5.1 支持下列存储技术:SCSI、SSA 和光纤通道(例如 FAStT 和 ESS 磁盘子系统)。受支持的外部存储子系统(IBM 制造)的完整列表可以在以下 IBM 网站上找到:


http://www-1.ibm.com/servers/eserver/pseries/ha/


HACMP 支持将下列 IBM 磁盘技术用作高可用性集群中的共享外部磁盘。

IBM 2105 Enterprise Storage Server


IBM 2105 Enterprise Storage Server 为各种各样的开放系统服务器提供并发连接和磁盘存储共享。除了 IBM Eserver pSeries 计算机以外,还支持各种各样的其他平台。


由于共享存储环境中支持的平台数量众多,为了避免干扰,通过提供适当的 LUN 屏蔽和分区配置以配置安全的存储访问是非常重要的。


ESS 使用了 IBM SSA 磁盘技术。ESS 提供了内置的可用性和数据保护。RAID 技术用于保护数据。此外,此类磁盘还具有内在的预测性故障分析功能,以在错误影响到数据可用性之前预测错误。


ESS 的几乎所有组件都是双倍配置的,可以在内部组件发生故障的情况下提供保护。ESS 管理内部存储(SSA 磁盘),该存储包括一个两节点的集群,节点之间通过高速内部总线连接,每个节点都提供完全相同的功能,因而在其中一个内部节点发生故障的情况下,存储仍然对客户端系统可用。


有关规划和使用 2105-800 Enterprise Storage Server(包括附加示意图等等)的更多信息,请参见以下网站:


http://www.storage.ibm.com/disk/ess/index.html


图 6 显示了一个使用 ESS 作为共享存储的典型 HACMP 集群。


图 6 ESS 存储
 

IBM FAStT 700 和 900 中端存储服务器


IBM FAStT 900 和 700 存储服务器为计算密集型环境中的高要求应用程序交付了突破性的磁盘性能和杰出的可靠性。


IBM FAStT 系列存储子系统通过提供优良的可伸缩性、性能和数据保护,从而成为用于实现中端解决方案的理想选择。虽然 FAStT 体系结构不如 ESS 中实现的体系结构那么完善,但是也基于冗余元素(存储控制器、电源和存储连接适配器)。


FAStT 700 和 900 体系结构同时在主机端和存储端实现了本机光纤通道协议。它没有提供 SCSI 支持,并且没有在两个控制器之间提供专用高速总线,但它提供了用于实现无中断操作的控制器故障转移功能,以及主机端的数据缓存。


有关 IBM 存储解决方案的完整信息,请参见以下网站:


http://www.storage.ibm.com/disk/fastt/index.html


有关到 HACMP 集群的典型 FAStT 连接,请参见图 7。


图 7 FastT 存储


IBM 串行存储体系结构磁盘子系统


串行存储体系结构(Serial Storage Architecture,SSA)存储子系统提供了更“离散的组件”解决方案,并提供了用于减少单点故障数量的功能。


SSA 存储通过使用冗余硬件(电源和存储连接)和电源及磁盘的热交换功能(并发维护),从而在 HACMP 环境中提供高可用性。


SSA 存储还提供了适配器级别(主机总线适配器,HBA)的 RAID 功能。


注意:通过使用 SSA RAID 选项,能够共享相同数据的 HACMP 节点数量仅限于两个。


可以将 IBM 7133 SSA 磁盘子系统用作共享外部磁盘存储设备,以在 HACMP 集群配置中提供并发访问。

HACMP 对灾难恢复的贡献


HACMP 基本软件奠定了松散耦合的集群技术的基础,以防止诸如处理器、网络和网络适配器等各个系统组件成为集群中的单点故障。此软件可以确保站点中的计算环境保持高度可用。


您只需根据 HACMP 集群组件定义站点中的系统组件,HACMP 基本软件功能将帮助保持系统组件在该站点中高度可用。


有关更多信息,请参见 High Availability Clusters Multi-Processing XD (Extended Distance) for HAGEO Technology: Planning and Administration Guide, SA22-7956。


图 9 显示了带有远程镜像 (GeoRM) 选项的地理集群关系图。


图 9 HAGEO 组件
 

级联资源组


级联资源组定义了可控制该资源组的所有节点的列表,以及每个节点在接管该资源组方面的优先级。


级联资源组的行为如下:



  • 在集群启动时,在缺省情况下,级联资源组在其主节点(在该节点组中具有最高优先级的节点)上激活。

此外,可以使用另一个名为“Inactive Takeover”的属性,以指定在具有最高优先级的节点(也称为主节点)在集群启动时不可用的情况下,可以在较低优先级的节点上激活该资源组。



  • 在节点发生故障时,级联资源组故障转移到 RG 节点优先级列表中具有下一个优先级的可用节点。

此外,通过为资源组指定“Dynamic Node Priority”策略,故障转移过程将基于某些动态参数(例如,具有最多 CPU 空闲时间的节点)来确定将接管该资源组的节点。



  • 在节点重新集成到集群中时,在缺省情况下,级联资源组将退回其主节点。

此外,通过为资源组指定“Cascading without Fallback”属性,当较高优先级的节点变得可用时,资源组将保留在接管节点上。


总而言之,级联资源组具有以下属性:



  • Inactive Takeover (IT) 是允许微调主节点不可用时的资源组启动(初始获取)的属性。
  • 在当前拥有此类资源组之一的节点发生故障时,该资源组将故障转移到节点优先级列表中的下一个可用节点。可以通过两种方式之一来配置故障转移优先级:使用缺省的节点优先级列表(这是配置 RG 时列出节点的顺序),或者通过设置 Dynamic Node Priority (DNP) 策略。
  • Cascading without Fallback (CWOF) 是一个修改退回行为的属性。通过使用 CWOF 属性,每当具有较高优先级的节点变得可用时,您可以避免不必要的 RG 退回(从而避免不必要的客户端中断)。在此模式下,可以在某个方便的时候手动将 RG 移动到主节点,而不必中断客户端。

循环资源组


对于循环资源组,节点优先级列表仅确定哪个节点将在所有者节点发生故障时接管该资源组。


在集群启动时,节点优先级列表中的第一个可用节点将激活该资源组。


如果资源组在接管节点上,它决不会在某个较高优先级的节点变得可用时退回该节点。


循环 RG 不存在动态节点优先级(Dynamic Node Priority,DNP)计算。


当在同一组节点上配置多个循环 RG 以便控制循环资源组的首选位置时,应该从参与节点列表中为每个组分配一个不同的最高优先级节点。


当集群启动时,每个节点将尝试获取自己拥有其最高优先级的循环资源组。


如果所有循环资源组都已激活,加入集群的新节点将仅作为这些资源组的备份节点来加入。如果所有循环组都未激活,加入集群的节点一般仅获取这些非活动资源组中的一个。其余资源组仍然保持非活动状态。


但是,如果存在多个可在其上移动资源组的网络,一个节点可以获取多个循环组,每个网络一个。


并发资源组


顾名思义,并发 RG 可以同时在多个节点上处于活动状态。在集群启动时,RG 将在列表中的所有节点上激活,并且没有首选的启动顺序。


对于并发资源组,节点之间不存在优先级;它们全都是平等的所有者节点。如果一个节点发生故障,其他节点将继续提供服务;资源组不移动。


可能需要附加的并发软件来管理对应用程序数据的并发访问。


自定义资源组


HACMP V5.1 中引入了这种新的 RG 类型,以简化资源组管理和便于理解。资源组名称(级联、循环和并发)对新用户来说可能令人混淆,因为:



  • 它们没有清楚指示基本的 RG 行为。
  • 附加的 RG 参数会使 RG 定义进一步复杂化:

Cascading without Fallback 和 Inactive Takeover。


此外,在某些情况下,用户需要标准 RG 定义所没有提供的行为组合。



  • HACMP V5.1 引入了自定义资源组。



    • 用户必须显式指定所需的启动、故障转移和退回行为。
    • RG 启动和退回可以通过使用 Settling Timer 和 Fallback Timer 来进行控制。
    • 还可以通过使用 Dynamic Node Priority (DNP) 来影响 RG 故障转移。


  • 限制(仅针对 HACMP V5.1):



    • 自定义 RG 仅支持通过服务 IP 地址/标签别名的 IPAT。
    • 不存在站点或复制的资源支持(对于 HACMP-XD)。

启动首选项



  • Online On Home Node Only:在节点启动时,RG 将仅在具有最高优先级的节点上置于在线。此行为等效于级联 RG 行为。
  • Online On First Available Node:在节点启动时,RG 将第一个激活的节点上置于在线。此行为等效于循环 RG 或使用非活动接管的级联 RG 的行为。如果配置了停留 (settling) 时间,则该时间将影响 RG 的启动行为。
  • Online On All Available Nodes:RG 应该在 RG 中的所有节点上在线。此行为等效于并发 RG 行为。此启动首选项将覆盖某些故障转移和退回首选项。

故障转移首选项



  • Fallover To Next Priority Node In The List:RG 将故障转移到节点列表中的下一个可用节点。此行为等效于级联和循环 RG 的行为。
  • Fallover Using Dynamic Node Priority:RG 将基于 DNP 计算来执行故障转移。资源组必须指定 DNP 策略。
  • Bring Offline (On Error Node Only):RG 将不在发生错误时进行故障转移;而是简单地将其置于离线。此行为最适合于并发式的 RG。

退回首选项



  • Fallback To Higher Priority Node:RG 将在某个具有较高优先级的节点变得可用时退回该节点。此行为等效于级联 RG 行为。退回计时器将影响此行为。
  • Never Fallback:即使某个较高优先级的节点变得在线,资源组也将保持在原位置。此行为等效于循环 RG 的行为。

应用程序监视


除了资源组管理以外,HACMP 还可以通过以下两种方法之一监视应用程序:



  • 应用程序进程监视:使用 RSCT 事件管理功能检测进程是否终止。
  • 应用程序自定义监视:基于您定义的监视方法(程序或脚本)来监视应用程序的运行状况。

注意:不能将应用程序进程监视用于监视通过 Shell 脚本启动的应用程序,或那些监视进程无法确定应用程序运行状况的应用程序。

对于监视 Shell 脚本应用程序,必须使用自定义监视方法(例如,Apache Web 服务器)。


当应用程序监视处于活动状态时,HACMP 的行为如下:



  • 对于应用程序进程监视,一个内核 hook 将通知 HACMP 集群管理器所监视的进程已终止,HACMP 将启动应用程序恢复过程。

要使恢复操作能够进行,必须提供某种方法来清理和重新启动应用程序(可以使用为应用程序服务器定义提供的应用程序启动/停止脚本)。


HACMP 尝试重新启动应用程序,并等待应用程序稳定指定的时间,然后发送通知消息和/或实际将整个 RG 移动到另一个节点(节点优先级列表中的下一个节点)。



  • 对于自定义应用程序监视(自定义方法),除了应用程序清理和重新启动方法以外,还必须提供用于执行定期应用程序测试的程序/脚本。

要规划进程监视器的配置,请检查以下事项:



  • 验证该应用程序是否可以使用某个进程监视器进行监视。
  • 检查要监视的进程的名称。必须使用准确的进程名称来配置应用程序监视器。
  • 指定拥有进程的用户名,例如 root。请注意,该进程拥有者必须拥有要监视的所有进程。
  • 指定要监视的应用程序的实例数量(进程数量)。缺省为一个实例。
  • 指定在开始监视前的等待时间(以秒为单位)。

注意:在大多数情况下,此值不应该为零。例如,对于数据库应用程序,您可能希望将监视延迟到启动脚本和初始数据库搜索已完成之后。



  • 重新启动数值,表示在采取任何其他操作之前尝试重新启动应用程序的次数。
  • 在重置重新启动数值前应用程序必须保持稳定的间隔(以秒为单位)。
  • 要在应用程序无法在重新启动数值内重新启动时采取的操作。缺省选择是通知,即运行一个事件来向集群通知故障情况。还可以指定故障转移,在此情况下,包含故障应用程序的资源组将移动到对该资源组拥有下一个最高优先级的集群节点。
  • 重新启动方法(如果希望的话)。(如果“Restart Count”不为零,则这是必需的。)

如果计划建立自定义监视方法,则还要检查:



  • 是否已指定了要用于检查指定应用程序的程序/脚本。
  • 关于运行该监视方法的频度的轮询间隔(以秒为单位)。如果监视器在此间隔内没有响应,则认为应用程序出错,并启动恢复过程。
  • 在用户定义的监视方法未在轮询间隔内返回时用于终止该监视器方法的信号。缺省信号为 SIGKILL。
  • 开始监视前的等待时间(以秒为单位)。例如,对于数据库应用程序,建议将监视延迟到启动脚本和初始数据库搜索已完成之后(否则,可能会认为应用程序出错并启动恢复过程)。
  • 重新启动数值,即在采取任何其他操作之前尝试重新启动应用程序的次数。
  • 在重置重新启动数值前应用程序必须保持稳定的间隔(以秒为单位)。
  • 在应用程序无法在重新启动数值内重新启动时采取的操作。

有关更多信息,请参见《HACMP for AIX 5L V5.1 Planning and Installation Guide》SC23-4861-02。

灾难恢复计划


从 HACMP V5.1 开始,HAGEO 和 GeoRM 已作为 IBM HACMP/XD(扩展距离)功能集成到 HACMP 中。


HAGEO 软件产品提供了一个用于构建容灾计算环境的灵活、可靠的平台。HAGEO 组件可以通过 TCP/IP 点对点网络在无限距离的地理站点之间镜像数据。


HAGEO 与 HACMP 协作提供整个地理站点的自动故障检测、通知和恢复。


本红皮书描述的灾难恢复策略使用两个站点:原始和恢复或备份站点。数据恢复策略必须处理以下问题:



  • 数据准备情况级别。



    • 第 0 级:无。不提供灾难恢复。
    • 第 1 级:定期备份。恢复到给定日期所必需的数据将被备份,并将其发送到另一个位置。
    • 第 2 级:为前滚做好准备。除了定期备份外,还将数据更新日志发送到另一个位置。传输可以是手动的或电子的。恢复将截止到恢复站点存储的最后一个日志数据集。
    • 第 3 级:前滚或向前恢复 (forward recover)。在恢复站点的磁盘上维护数据的副本。接收数据更新日志,并使用恢复实用程序定期将其应用于副本。
    • 第 4 级:实时前滚。与前滚一样,只不过是在原始站点中记录更新的同时传输并应用更新。日志数据的这种实时传输和应用不会影响原始站点的事务响应时间。
    • 第 5 级:实时远程更新。在发送事务响应或完成任务前同时更新数据的原始和恢复副本。

  • 站点互连选项。

    • 第 0 级:无。站点之间不存在互连或数据传输。
    • 第 1 级:手动传输。不存在互连。对于站点之间的数据传输,将手动管理数据的发送、跟踪和接收。
    • 第 2 级:远程磁带。以电子方式将数据传输到远程磁带。

发送和接收是自动的。跟踪可以是自动或手动的。




    • 第 3 级:远程磁盘。以电子方式将数据传输到远程磁盘。

发送、接收和跟踪全都是自动的。



  • 恢复站点准备情况。



    • 冷站点(Cold):冷站点通常是具有适当基础设施的环境,但是只有很少或没有数据处理设备。必须将安装此设备作为数据恢复过程中的第一步。

当灾难发生时,“定期备份”和“为前滚做好准备”的数据都可以从存储位置传输到此站点。




    • 暖站点(Warm):暖站点安装有可操作的数据处理设备。在灾难发生前,此设备用于其它数据处理任务。可以将数据处理资源用于存储数据,例如日志。恢复过程在关闭和备份站点的定期工作之后开始。

“定期备份”和“为前滚做好准备”的数据都可以存储在此站点以加速灾难恢复。




    • 热站点(Hot):热站点安装有可操作的数据处理设备,并且可以连续或定期存储数据以缩短恢复时间。

可以实现从“前滚”到“实时远程更新”的所有级别。


HAGEO 软件提供了最高级别的灾难恢复:



  • 第 5 级:HAGEO 通过在发送事务响应或完成任务前同时更新数据的原始和恢复副本,从而提供了“实时远程更新”的数据准备情况。
  • 第 3 级:HAGEO 还通过以电子方式将数据传输到地理上的远程站点,并且该站点的磁盘更新和所有簿记都是自动的,从而提供了远程磁盘站点互连。
  • HAGEO 提供了热站点准备情况。由于恢复站点包含可操作的数据处理设备以及最新数据,这将使恢复时间保持最短。

此外,使用 HAGEO,恢复站点可活动地处理数据并执行有用的工作。事实上,每个站点都可以是另一个站点的备份,从而最小化为每个原始生产站点建立恢复站点的成本。

SSA 存储为配置具有“遗留”或现有应用程序和有限数量的节点的 HACMP 集群提供了一种灵活、相当简单和更加“自定义”的方法。建议要实现的所有新配置都使用新技术(FC 存储)。


有关一个两节点的 HACMP 集群的示例,请参见图 8。


图 8 SSA 存储
 

软件规划


在规划 HACMP 集群的过程中,最重要的步骤之一是选择将在集群节点上运行的软件级别。


节点软件规划中的决策因素包括:



  • 操作系统需求:AIX 版本和建议的级别。
  • 应用程序兼容性:确保在集群环境中满足并支持所有应用程序需求。
  • 资源:可以使用的资源类型(IP 地址、存储配置、是否需要 NFS 等等)。

AIX 级别和相关需求


在安装 HACMP 之前,必须检查操作系统的级别需求。


表 4 显示了在本红皮书编写之际的建议 HACMP 和操作系统级别。


表 4 HACMP V5.1 和 V5.2 的操作系统级别要求




























HACMP 版本 AIX OS 级别 AIX APAR RSCT 级别
HACMP V5.1 5100-05 IY50579、IY48331 2.2.1.30 或更高版本
HACMP V5.1 5200-02 IY48180、IY44290 2.3.1.0 或更高版本
HACMP V5.2 5100-06 IY54018、IY53707、IY54140、IY55017 2.2.1.30 或更高
HACMP V5.2 5200-03 IY56213 2.3.3.0 或更高版本


有关 HACMP V5.1 和 V5.2 的建议维护级别的最新列表,请访问以下 IBM 网站:


http://www-912.ibm.com/eserver/support/fixes/fcgui.jsp


注意:



  • 要将 C-SPOC 与 VPATH 磁盘一起使用,将需要 Subsystem Device Driver (SDD) 1.3.1.3 或更高版本。
  • 要使用 HACMP 在线规划工作表,将需要 AIX 5L Java Runtime Environment 1.3.1 或更高版本以及图形显示器(本地或远程)。
  • HACMP V5.1 和 V5.2 支持使用 AIX 5L V5.2 多路径 I/O (MPIO) 设备驱动程序来访问磁盘子系统。

下列 AIX 可选基本操作系统(base operating system,BOS)组件是 HACMP 的必备条件:



  • bos.adt.lib
  • bos.adt.libm
  • bos.adt.syscalls
  • bos.net.tcp.client
  • bos.net.tcp.server
  • bos.rte.SRC
  • bos.rte.libc
  • bos.rte.libcfg
  • bos.rte.libcur
  • bos.rte.libpthreads
  • bos.rte.odm
  • bos.data

在使用(增强的)并发资源管理器访问时,还需要以下组件。



  • bos.rte.lvm.5.1.0.25 或更高版本(用于 AIX 5L V5.1)
  • bos.clvm.enh

应用程序兼容性


运行在某个独立 AIX 服务器上的几乎任何应用程序都可以通过使用 HACMP 集群得到保护,从这个意义上讲,HACMP 是一个灵活的高可用性解决方案。


在开始集群应用程序规划时,应该考虑以下方面:



  • 与所使用的 AIX 版本的应用程序兼容性。
  • 与要实现用于高可用性的存储方法的应用程序兼容性。
  • 还必须知道应用程序和平台之间的所有相互依赖性,也就是所有应用程序文件的所有存储位置(持久数据、临时文件、套接字,以及管道——如适用的话)。
  • 还应该能够提供无人参与的应用程序启动/停止方法(脚本),并且应用程序必须能够在重新启动时从错误(例如,在运行应用程序的节点崩溃的情况下)中恢复。

重要:如果应用程序无法在独立节点上正常运行,或者不能确定所有的应用程序依赖性,请不要继续进行 HACMP 实现!!!



  • 如果计划使用应用程序监视,则还应该提供应用程序监视工具(方法、行为和脚本)。
  • 应用程序客户端依赖性(服务器重新启动时的客户端行为)。
  • 应用程序网络依赖性(套接字、路由等等)
  • 许可证授权问题,也就是说,如果应用程序依赖 CPU ID,则应该考虑为能够承载应用程序的每个节点购买备用许可证。此外,如果应用程序基于处理器数量授予许可证,则在故障转移情况下,要确保不会违背许可证授权。

应用程序服务器


根据 HACMP 定义,应用程序服务器由一个脚本集合来表示,HACMP 使用这些脚本在激活资源组时启动应用程序,或在将资源组置于离线时停止同一个应用程序。


在应用程序已启动之后,HACMP 还可以监视该应用程序,并在应用程序不能正常运行时采取相应措施。应用程序监视可以在进程级别执行,还可以使用自定义方法来执行(例如,对于诸如数据库引擎等多进程应用程序)。


注意:HACMP/ES V4.4 中已经引入了基于 RSCT 的事件管理功能 (EM) 的应用程序监视。从 HACMP V5.2 开始,事件管理已被取代为资源监视和控制(Resource Monitoring and Control,RMC),后者在功能上是等效的,但是提供了更多的灵活性。从 HACMP V5.2 开始,还可以监视应用程序启动。


HACMP 还提供了应用程序可用性分析工具,此工具对于审核总体应用程序可用性和用于评估集群环境非常有用。


规划 NFS 配置


HACMP 的典型应用之一是为客户端计算机和应用程序提供高可用性网络文件系统 (HA-NFS)。这对于使用交叉挂载的网络文件系统实现相互接管来说是非常有用的,在运行应用程序的集群中尤其是如此。


从 HACMP V4.4 开始,HA-NFS 功能已集成到 HACMP 中,因此不再存在单独的产品。


使用 NFS 时的一些注意事项:



  • 对于将要通过 NFS 导出的共享卷组,卷组主编号( Major Number

)在能够提供该 VG 中的文件系统的所有集群节点上都是相同的。



  • 在 AIX 中,当您导出文件和目录时,将使用 mknfsexp 命令,因此将创建/更新 /etc/exports 文件。另一方面,在 HACMP 中,必须在资源组配置中指定要导出和进行 NFS 装入的文件系统和目录。
  • 如果需要这些文件系统的任何可选配置,则应该创建 /usr/es/sbin/cluster/etc/exports 文件。
  • 对于具有要导出的文件系统的所有资源组,必须将“File systems Mounted before IP Address Configured”属性设置为“true”。
  • HACMP 脚本包含缺省 NFS 行为。您可能需要修改这些脚本以处理特定的配置。
  • 在 HACMP V5.1 中,除了级联资源组外,还可以在循环或自定义资源组中配置高可用性 NFS。

注意:NFS 锁功能仅限于两节点的集群。此功能提供了可靠的 NFS 服务器能力,允许备份处理器在主 NFS 服务器发生故障时恢复当前 NFS 活动,从而将锁保留在 NFS 文件系统和副本缓存 (dupcache) 上。

许可证授权


大多数软件供应商都要求,对于每台物理计算机或多处理器 (SMP) 计算机中的每个处理器,每个应用程序应该使用一个唯一的许可证。通常,许可证激活代码是在安装时输入的。


但是在 HACMP 环境中,在接管情况下,如果应用程序在不同的节点上重新启动,您必须确保拥有用于新计算机的必需激活代码(许可证);否则应用程序可能无法正常启动。


应用程序还可能需要与节点绑定的唯一许可证(每个节点上的一个单独许可证文件)。


有些应用程序还具有关于可在集群中用于该应用程序的浮动许可证数量的限制。为避免此问题,请确保您拥有用于每台集群节点计算机的足够许可证,以便应用程序能够同时在多个节点上运行(对于并发应用程序尤其是如此)。


客户端连接


在资源组接管期间,应用程序在另一个节点上启动,因此客户端必须知道该操作。在某些情况下,应用程序客户端使用客户端计算机上的 ARP 缓存来重新连接到服务器。在此情况下,存在两种可能的情形:



  • 包含该应用程序的服务 IP 的网络将通过 IP 替换的 IPAT 用于本地管理的 MAC 地址接管(因而不必更新客户端计算机 ARP 缓存)。
  • 每当发生网络或节点事件,HACMP 就使用 clinfo 程序,此程序将调用 /usr/es/sbin/cluster/etc/clinfo.rc 脚本。缺省情况下,此操作将更新系统的 ARP 缓存和指定的客户端 ARP 缓存,以反映对网络地址的更改。如果需要进一步的操作,可以自定义此脚本。

运行 clinfo 守护进程的客户端将能够在发生集群事件后快速重新连接到集群。


注意:如果使用通过 IP 别名的 IPAT,请确保所有客户端都支持 TCP/IP 无故 ARP 功能。


如果 HACMP 节点和客户端在同一个子网上,并且客户端没有运行 clinfo 守护进程,您可能必须通过从集群节点 ping 该客户端,从而间接更新本地 ARP 缓存。


为实现此目的,可以在集群节点上将您希望通知的客户端主机的 IP 标签或 IP 地址添加到 clinfo.rc 脚本中的 PING_CLIENT_LIST 变量。每当发生集群事件,clinfo.rc 脚本就对 PING_CLIENT_LIST 中指定的每个主机执行以下命令:





# ping -c1 $host


在客户端位于不同子网上的情况下,应确保在发生 IPAT 时更新路由器 ARP 缓存;否则,客户端预期将会在重新连接时发生延迟。

操作系统空间需求


在 HACMP V5.1 中,集群验证程序 (clverify) 和新的集群通信守护进程 (clcomdES) 都需要使用 /var 文件系统中的附加空间。


由于详细的消息和附加的调试信息,集群中的每个节点上的 /var 文件系统必须满足以下空闲空间需求:



  • 20 MB,其中:



    • /var/hacmp/clcomd/clcomd.log 需要 2 MB。
    • /var/hacmp/clcomd/clcomddiag.log 需要 18 MB。


  • 用于 /var/hacmp/odmcache 目录中存储的文件的附加(1 MB x 集群中的节点数量)空间。
  • 每个集群节点用于集群验证数据的 4 MB。
  • 用于集群验证日志 (clverify.log[0-9]) 的 2 MB。

例如,对于一个四节点的集群,建议 /var 文件系统中至少有 42 MB 的空闲空间。



  • 应该有 2 MB 的空闲空间用于写入 clverify.log[0-9] 文件。
  • 应该有 16 MB(每个节点 4 MB)的空闲空间用于写入来自节点的验证数据。
  • 应该有 20 MB 的空闲空间用于写入 clcomd 日志信息。
  • 应该有 4 MB(每个节点 1 MB)的空闲空间用于写入 ODM 缓存数据。

对于集群中的每个节点,clverify 实用程序最多需要 /var 文件系统中的 4 MB 空闲空间。clverify 一次最多可以保存某个节点的验证数据的四个副本(在发起该验证的节点上)。



  • /var/hacmp/clverify/current/<nodename>/* 包含当前的 clverify 执行所产生的日志。
  • /var/hacmp/clverify/pass/<nodename>/* 包含上次通过的验证所产生的日志。
  • /var/hacmp/clverify/pass.prev/<nodename>/* 包含倒数第二次通过的验证所产生的日志。
  • /var/hacmp/clverify/fail/<nodename>/* 包含有关上次失败的验证的信息。

此外,/var/hacmp/clverify/clverify.log 及其副本 [0-9] 通常消耗 1-2 MB 的磁盘空间。

资源组规划


资源组是一个逻辑实体,其中包含 HACMP 要使其高度可用的资源。资源可以是:



  • 存储空间(应用程序代码和数据)



    • 文件系统
    • 网络文件系统
    • 原始逻辑卷
    • 原始物理磁盘


  • 服务 IP 地址/标签(由客户端用于访问应用程序数据)
  • 应用程序服务器



    • 应用程序启动脚本
    • 应用程序停止脚本

要让 HACMP 使资源高度可用,必须将每个资源包括在资源组中。


每当发生集群事件和集群中的条件发生改变,HACMP 就将资源组从一个节点移动到另一个节点,从而确保集群资源的可用性。


HACMP 控制资源组在以下情况下的行为:



  • 集群启动
  • 节点故障
  • 节点重新集成
  • 集群关闭

在这其中的每个集群阶段,HACMP 中的资源组行为由以下条件确定:



  • 哪个或哪些节点在集群启动时获取该资源组。
  • 哪个节点在所有者节点发生故障时接管该资源组。
  • 资源组是要退回刚从先前发生的故障中恢复的节点,还是保留在当前拥有它的节点上。

集群节点之间的优先级关系决定了哪个集群节点最初控制某个资源组,以及原始节点在发生故障后重新加入集群时,哪个节点将接管该资源组的控制权。


资源组接管关系可定义为:



  • 级联(Cascading)
  • 循环(Rotating)
  • 并发(Concurrent)
  • 自定义(Custom)

级联、循环和并发资源组是 HACMP V5.1 以前的“传统”类型。由于这些类型的定义可能难于理解,HACMP V5.1 中引入了新的“自定义”类型的资源组。


这只是规范化 HACMP 术语并使得 HACMP 概念更容易理解的第一步。从 HACMP V5.2 开始,“传统”资源组类型已被唯一的自定义资源组所取代。

赞(0) 打赏
转载请注明出处:服务器评测 » HACMP 认证学习系列,第 2 部分:计划与设计
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏