适用于 SUSE Linux Enterprise High Availability Extension 12 SP5

9 添加或修改资源代理

摘要

需由群集管理的所有任务都必须可用作资源。在此处需要考虑两个主要组:资源代理和 STONITH 代理。对于这两个类别,您都可以添加自己的代理,根据需要扩展群集的功能。

9.1 STONITH 代理

群集有时会检测到某个节点行为异常,需要删除此节点。这称为屏蔽,通常使用 STONITH 资源实现。

警告
警告:不支持外部 SSH/STONITH

由于无法了解 SSH 可能对其他系统问题如何做出反应。出于此原因,生产环境不支持外部 SSH/STONITH 代理(例如 stonith:external/ssh)。如果您仍要使用此类代理进行测试,请安装 libglue-devel 包。

要(从软件端)获取所有当前可用的 STONITH 设备列表,请使用 crm ra list stonith 命令。如果您找不到收藏的代理,请安装 -devel 包。有关 STONITH 设备和资源代理的详细信息,请参见第 10 章 “屏障和 STONITH

目前尚无有关写入 STONITH 代理的文档。如果要写入新的 STONITH 代理,请参见 cluster-glue 包的源中提供的示例。

9.2 写入 OCF 资源代理

所有 OCF 资源代理 (RA) 都可在 /usr/lib/ocf/resource.d/ 中找到,请参见第 6.3.2 节 “支持的资源代理类”了解更多信息。每个资源代理都必须支持以下操作才能进行控制:

start

启动或启用资源

stop

停止或禁用资源

status

返回资源状态

monitor

status 类似,但还会检查是否存在意外状态

validate

验证资源配置

meta-data

返回有关资源代理的 XML 格式的信息

创建 OCF RA 的常规过程大概如下:

  1. 将文件 /usr/lib/ocf/resource.d/pacemaker/Dummy 装载为模板。

  2. 为每个新资源代理创建新的子目录,以避免发生命名冲突。例如,如果您的一个资源组 kitchen 具有资源 coffee_machine,可将此资源添加到目录 /usr/lib/ocf/resource.d/kitchen/。要访问此资源代理,请执行命令 crm

    root # crm configure primitive coffee_1 ocf:coffee_machine:kitchen ...
  3. 实施其他外壳功能,并用不同名称保存文件。

可在 https://github.com/ClusterLabs/resource-agents/blob/master/doc/dev-guides/ra-dev-guide.asc 中找到有关写入 OCF 资源代理的更多细节。在第 1 章 “产品概述中可以找到有关若干概念的特殊信息。

9.3 OCF 返回码和故障恢复

根据 OCF 规范,有一些关于操作必须返回的退出代码的严格定义。群集会始终检查返回代码与预期结果是否相符。如果结果与预期值不匹配,则将操作视为失败,并将启动恢复操作。有三种类型的故障恢复:

表 9.1︰ 故障恢复类型

恢复类型

描述

群集执行的操作

发生临时错误。

重启动资源或将它移到新位置。

发生非临时错误。错误可能特定于当前节点。

将资源移到别处,避免在当前节点上重试该资源。

致命

发生所有群集节点共有的非临时错误。这表示指定了错误配置。

停止资源,避免在任何群集节点上启动该资源。

假定某个操作被视为已失败,下表概括了不同的 OCF 返回代码。此外,该表还显示了收到相应的错误代码时群集将启动的恢复类型。

表 9.2︰ OCF 返回代码

OCF 返回代码

OCF 别名

描述

恢复类型

0

OCF_SUCCESS

成功。命令成功完成。这是所有启动、停止、升级和降级命令的所需结果。

1

OCF_ERR_­GENERIC

通用出现问题错误代码。

2

OCF_ERR_ARGS

资源配置在此计算机上无效(例如,它引用了在节点上找不到的位置/工具)。

3

OCF_­ERR_­UN­IMPLEMENTED

请求的操作未实现。

4

OCF_ERR_PERM

资源代理没有足够的特权,不能完成此任务。

5

OCF_ERR_­INSTALLED

资源所需的工具未安装在此计算机上。

6

OCF_ERR_­CONFIGURED

资源配置无效(例如,缺少必需的参数)。

致命

7

OCF_NOT_­RUNNING

资源未运行。群集将不会尝试停止为任何操作返回此代码的资源。

此 OCF 返回代码可能需要或不需要资源恢复,这取决于所需的资源状态。如果出现意外,则执行恢复。

不适用

8

OCF_RUNNING_­MASTER

资源正在主节点中运行。

9

OCF_FAILED_­MASTER

资源在主节点中,但已失败。资源将再次被降级、停止再重启动(然后也可能升级)。

其他

不适用

自定义错误代码。

打印此页