群集可使用三种类型的 RA(资源代理)。首先,有旧式 Heartbeat 1 脚本。高可用性可使用 LSB 初始化脚本。最后,群集有其自己的一组 OCF (Open Cluster Framework) 代理。本文档重点介绍 LSB 脚本和 OCF 代理。
要创建群集资源,请使用 crm 工具。要向群集添加新的资源,常规步骤如下所示:
打开壳层并成为 root。
运行 crm 来打开 crm 的内部壳层。提示符变为 crm(live)#。
配置原始 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 地址。必须将地址更改为您的设置。
显示您所做的更改并进行复查:
crm(live)configure# show
要查看 XML 结构,请使用以下命令:
crm(live)configure# show xml
提交更改使其生效:
crm(live)configure# commit
通常可在目录 /etc/init.d 中找到所有 LSB 脚本。根据 http://www.linux-foundation.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/iniscrptact.html 中所述,它们必须已实现一些操作,至少包括 start、stop、restart、reload、force-reload 和 status。
这些服务的配置没有标准化。如果您打算将 LSB 脚本用于 High Availability,请确定您了解各个脚本是如何配置的。您通常可在 /usr/share/doc/packages/包名中的各个包的文档中找到有关这些内容的文档。
注: 请勿接触高可用性使用的服务
当某个服务由 High Availability 使用时,不可以通过其他方式接触该服务。这表示在引导、重引导或手动操作时不应启动或停止该资源。但是,如果要检查服务是否正确配置,可手动启动该服务,但请确定在 High Availability 接管前再次停止该服务。
在使用 LSB 资源之前,确定该资源的配置在所有群集节点上存在并且是相同的。该配置不由 High Availability 管理。您必须自己管理。
所有 OCF 代理都位于 /usr/lib/ocf/resource.d/heartbeat/。这些是功能与 LSB 脚本功能相似的小型程序。但是,该配置始终使用环境变量来设置。要求所有 OCF 资源代理至少包含操作 start、stop、status、monitor 和 meta-data。meta-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, 设置简单的测试资源中查找配置示例。
要设置 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 High Availability 配置之前,请手动设置 drbd 设备。这主要是在 /etc/drbd.conf 中配置 drbd 并使它同步。存储管理指南 中描述了配置 drbd 的详细步骤。现在,假定您配置了在两个群集节点上的设备 /dev/drbd0 中都可访问的资源 r0。
drbd 资源为 OCF 主从属资源。这在对 drbd RA 的元数据的描述中可找到。但是,更重要的是元数据的 actions 部分中包含操作 promote 和 demote。这些操作对于主从属资源是必需的,通常不提供给其他资源。
对于 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 地址上始终可用,可使用附加 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