5.3 创建群集资源

群集可使用三种类型的 RA(资源代理)。首先,有旧式 Heartbeat 1 脚本。高可用性可使用 LSB 初始化脚本。最后,群集有其自己的一组 OCF (Open Cluster Framework) 代理。本文档重点介绍 LSB 脚本和 OCF 代理。

要创建群集资源,请使用 crm 工具。要向群集添加新的资源,常规步骤如下所示:

  1. 打开壳层并成为 root

  2. 运行 crm 来打开 crm 的内部壳层。提示符变为 crm(live)#

  3. 配置原始 IP 地址:

    crm(live)# configure
    crm(live)configure# primitive myIP ocf:heartbeat:IPaddr \
         params ip=127.0.0.99 op monitor intervall=60s

    上一命令配置了名称为 myIP原始资源。您还需要类(在此为 ocf)、提供程序 (heartbeat) 和类型 (IPaddr)。此外,此原始资源还需要一些参数,如 IP 地址。必须将地址更改为您的设置。

  4. 显示您所做的更改并进行复查:

    crm(live)configure# show

    要查看 XML 结构,请使用以下命令:

    crm(live)configure# show xml
  5. 提交更改使其生效:

    crm(live)configure# commit

5.3.1 LSB 初始化脚本

通常可在目录 /etc/init.d 中找到所有 LSB 脚本。根据 http://www.linux-foundation.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/iniscrptact.html 中所述,它们必须已实现一些操作,至少包括 startstoprestartreloadforce-reloadstatus

这些服务的配置没有标准化。如果您打算将 LSB 脚本用于 High Availability,请确定您了解各个脚本是如何配置的。您通常可在 /usr/share/doc/packages/包名中的各个包的文档中找到有关这些内容的文档。

注: 请勿接触高可用性使用的服务

当某个服务由 High Availability 使用时,不可以通过其他方式接触该服务。这表示在引导、重引导或手动操作时不应启动或停止该资源。但是,如果要检查服务是否正确配置,可手动启动该服务,但请确定在 High Availability 接管前再次停止该服务。

在使用 LSB 资源之前,确定该资源的配置在所有群集节点上存在并且是相同的。该配置不由 High Availability 管理。您必须自己管理。

5.3.2 OCF 资源代理

所有 OCF 代理都位于 /usr/lib/ocf/resource.d/heartbeat/。这些是功能与 LSB 脚本功能相似的小型程序。但是,该配置始终使用环境变量来设置。要求所有 OCF 资源代理至少包含操作 startstopstatusmonitormeta-datameta-data 操作可检索有关如何配置代理的信息。例如,如果您想了解有关 IPaddr 代理的更多信息,可使用以下命令:

OCF_ROOT=/usr/lib/ocf /usr/lib/ocf/resource.d/heartbeat/IPaddr meta-data

输出是简单 XML 格式的详细信息。您可以使用 ra-api-1.dtd DTD 来验证该输出。此 XML 格式基本上包含三个部分,首先是一些通用的描述,然后是所有可用的参数,最后是该代理的可用操作。

此输出设计为机器可读,可读性不太好。出于此原因,crm 工具包含了 ra 命令,以便获取有关资源代理的不同信息:

# crm
crm(live)# ra
crm(live)ra#

命令 classes 可提供所有类和提供程序的列表:

crm(live)ra# classes
stonith
lsb
ocf / lvm2 ocfs2 heartbeat pacemaker
heartbeat

要获取有关某个类(和提供程序)的所有可用资源代理的概述,请使用 list 命令:

crm(live)ra# list ocf
AudibleAlarm       ClusterMon         Delay                  Dummy
Filesystem         ICP                IPaddr                 IPaddr2
IPsrcaddr          IPv6addr           LVM                    LinuxSCSI
MailTo             ManageRAID         ManageVE               Pure-FTPd
Raid1              Route              SAPDatabase            SAPInstance
SendArp            ServeRAID          SphinxSearchDaemon     Squid
...

有关资源代理的更多信息可使用 meta 命令来查看:

crm(live)ra# meta Filesystem ocf heartbeat
Filesystem resource agent (ocf:heartbeat:Filesystem)

Resource script for Filesystem. It manages a Filesystem on a shared storage medium.

Parameters (* denotes required, [] the default):
...

Q 键可退出查看器。可在部分 6.0, 设置简单的测试资源中查找配置示例。

5.3.3 NFS 服务器的示例配置

要设置 NFS 服务器,需要三种资源:文件系统资源、drbd 资源及一组 NFS 服务器和 IP 地址。以下子节介绍了如何执行该操作。

设置文件系统资源

filesystem 资源已配置为 OCF 原始资源。它的任务是在发出启动和停止请求时将设备装入和卸载到某个目录。在这种情况下,该设备为 /dev/drbd0,用作安装点的目录为 /srv/failover。使用的文件系统为 xfs

可使用 crm 壳层中的以下命令来配置文件系统资源:

crm(live)# configure
crm(live)configure# primitive filesystem_resource \
    ocf:heartbeat:Filesystem \
    params device=/dev/drbd0 directory=/srv/failover fstype=xfs

配置 drbd

在开始 drbd High Availability 配置之前,请手动设置 drbd 设备。这主要是在 /etc/drbd.conf 中配置 drbd 并使它同步。存储管理指南 中描述了配置 drbd 的详细步骤。现在,假定您配置了在两个群集节点上的设备 /dev/drbd0 中都可访问的资源 r0

drbd 资源为 OCF 主从属资源。这在对 drbd RA 的元数据的描述中可找到。但是,更重要的是元数据的 actions 部分中包含操作 promotedemote。这些操作对于主从属资源是必需的,通常不提供给其他资源。

对于 High Availability,主从属资源可能在不同的节点上有多个主资源。甚至有可能主资源和从属资源在同一个节点上。因此,请以这样的方式配置此资源:只有一个主资源和一个从属资源,且各自在不同的节点上运行。可使用 master 资源的元属性来执行此操作。主从属资源是 High Availability 中的一种特殊的克隆资源。每个主资源和每个从属资源计为一个克隆。

使用 crm 壳层中的以下命令来配置主从属资源:

crm(live)# configure
crm(live)configure# primitive drbd_r0 ocf:heartbeat:drbd params
crm(live)configure# ms drbd_resource drbd_r0 \
   meta clone_max=2 clone_node_max=1 master_max=1 master_node_max=1 notify=true
crm(live)configure# commit

NFS 服务器和 IP 地址

要使 NFS 服务器在同一个 IP 地址上始终可用,可使用附加 IP 地址以及计算机用于正常操作的那些地址。除系统的 IP 地址以外,此地址随后会指派到活动的 NFS 服务器。

NFS 服务器和 NFS 服务器的 IP 地址在同一台计算机上应始终是活动的。在这种情况下,启动顺序就不是很重要了。它们甚至可以同时启动。这些是组资源的典型要求。

在启动 High Availability RA 配置之前,先使用 YaST 配置 NFS 服务器。不要让系统启动 NFS 服务器。只需要设置配置文件。如果要手动执行该操作,请参阅手册页导出 exports(5) (man 5 exports)。配置文件为 /etc/exports。将 NFS 服务器配置为 LSB 资源。

通过 High Availability RA 配置可完全配置 IP 地址。系统中不需要任何其他修改。IP 地址 RA 为 OCF RA。

crm(live)# configure
crm(live)configure# primitive nfs_resource lsb:nfsserver
crm(live)configure# primitive ip_resource ocf:heartbeat:IPaddr \
      params ip=10.10.0.1
crm(live)configure# group nfs_group nfs_resource ip_resource
crm(live)configure# commit
crm(live)configure# end
crm(live)# quit