跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability 文档 / 管理指南 / 配置和管理 / 配置群集资源
适用范围 SUSE Linux Enterprise High Availability 15 SP6

6 配置群集资源

作为群集管理员,您需要在群集中为服务器上运行的每个资源或应用程序创建群集资源。群集资源可能包括网站、电子邮件服务器、数据库、文件系统、虚拟机,以及您希望用户随时都可以访问的任何其他基于服务器的应用程序或服务。

6.1 资源类型

可创建以下类型的资源:

原始资源

基元资源是最基本的资源类型。

组包含一组需要放在一起、按顺序启动和按相反顺序停止的资源。

克隆资源

克隆是可以在多个主机上处于活动状态的资源。如果各个资源代理支持,则任何资源均可克隆。

可升级克隆(也称为多状态资源)是一种可以升级的特殊类型的克隆资源。

6.2 支持的资源代理类别

对于添加的每个群集资源,需要定义资源代理需遵守的标准。资源代理提取它们提供的服务并显示群集的确切状态,以使群集对其管理的资源不作确答。群集依赖于资源代理在收到启动、停止或监控命令时作出相应反应。

通常,资源代理的形式为外壳脚本。SUSE Linux Enterprise High Availability 支持以下几类资源代理:

Open Cluster Framework (OCF) 资源代理

OCF RA 代理最适合与高可用性搭配使用,特别是当您需要可升级克隆资源或特殊监控功能时。这些代理通常位于 /usr/lib/ocf/resource.d/provider/ 中。其功能与 LSB 脚本的功能相似。但其配置始终通过环境变量进行,这样方便接受和处理参数。OCF 规范对于操作必须返回的退出码有严格的定义。请参见第 10.3 节 “OCF 返回代码和故障恢复”。群集严格遵循这些规范。

所有 OCF 资源代理都必须至少含有 statusstartmonitorstopmeta-data 操作。meta-data 操作可检索有关如何配置代理的信息。例如,要了解提供程序 IPaddrheartbeat 代理的更多信息,请使用以下命令:

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

输出是 XML 格式的信息,包括多个部分(代理的常规描述、可用参数和可用操作)。

或者,也可以使用 crmsh 来查看有关 OCF 资源代理的信息。有关详细信息,请参见 第 5.5.4 节 “显示有关 OCF 资源代理的信息”

Linux Standards Base (LSB) 脚本

LSB 资源代理一般由操作系统/发行套件提供,位于 /etc/init.d 中。要用于群集,它们必须遵守 LSB init 脚本规范。举例而言,这些代理中必须至少实现以下几个操作:reloadstartforce-reloadstoprestartstatus。有关详细信息,请参见https://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html

这些服务的配置没有标准化。如果要将 LSB 脚本用于 High Availability,请确保您了解如何配置相关脚本。通常可在 /usr/share/doc/packages/PACKAGENAME 中的相关软件包文档中找到这方面的信息。

systemd

Pacemaker 可以管理 systemd 服务(如果有)。systemd 不使用 init 脚本,而是使用单元文件。通常,服务(或单元文件)由操作系统提供。如果您要转换现有的 init 脚本,可访问 https://0pointer.de/blog/projects/systemd-for-admins-3.html 找到更多信息。

服务

目前有许多类型的系统服务同时存在:LSB(属于 System V init)、systemd 和(在某些发行套件中提供的)upstart。因此,Pacemaker 支持使用特殊别名,以确定哪个服务适用于指定的群集节点。当群集中混合使用了 systemd、upstart 和 LSB 服务时,此功能尤其有用。Pacemaker 会尝试按以下顺序查找指定服务:LSB (SYS-V) init 脚本、Systemd 单元文件或 Upstart 作业。

Nagios

使用监控插件(以前称为 Nagios 插件)可以监控远程主机上的服务。Pacemaker 可以使用监控插件(如果有)来执行远程监控。有关详细信息,请参见第 9.1 节 “使用监控插件监控远程主机上的服务”

STONITH(屏蔽)资源代理

此类仅用于与屏蔽相关的资源。有关详细信息,请参见第 12 章 “屏障和 STONITH

SUSE Linux Enterprise High Availability 随附的代理是按照 OCF 规范编写的。

6.3 超时值

资源的超时值会受以下参数的影响:

  • op_defaults(操作的全局超时),

  • 在资源模板中定义的特定超时值,

  • 为资源定义的特定超时值。

注意
注意:值的优先级

如果为资源定义了特定值,则该值优先于全局默认值。资源的特定值也优先于在资源模板中定义的值。

获取超时值权限非常重要。将超时值设置得太小,会因以下原因产生大量(不必要的)屏蔽操作:

  1. 如果资源超时,便会失败,并且群集会尝试将其停止。

  2. 如果停止该资源的操作也失败(例如,由于停止超时设置得太短),群集将屏蔽该节点。它会将发生此情况的节点视为失控。

您可以使用 crmsh 和 Hawk2 调整操作的全局默认值并设置任何特定的超时值。确定和设置超时值的最佳实践如下所示:

过程 6.1︰ 确定超时值
  1. 检查资源启动和停止(在负载状况下)所需的时间。

  2. 如果需要,请添加 op_defaults 参数并相应地设置(默认)超时值:

    1. 例如,将 op_defaults 设置为 60 秒:

      crm(live)configure# op_defaults timeout=60
    2. 对于需要更长时间期限的资源,则定义单独的超时值。

  3. 为资源配置操作时,添加单独的 startstop 操作。使用 Hawk2 配置操作时,该工具会针对这些操作提供有用的超时建议。

6.4 创建原始资源

必须先设置群集中的资源,然后才能使用它。例如,要使用 Apache 服务器作为群集资源,请先设置 Apache 服务器并完成 Apache 配置,然后才能在群集中启动相应的资源。

如果资源有特定环境要求,请确保这些要求已得到满足并且在所有群集节点上均相同。此类配置无法通过 SUSE Linux Enterprise High Availability 管理。您必须自行管理。

可以使用 Hawk2 或 crmsh 来创建原始资源。

注意
注意:不要操作由群集管理的服务

当您使用 SUSE Linux Enterprise High Availability 管理某个资源时,就不能以其他方式启动或停止该资源(例如,在群集外手动启动或停止,或在系统引导或重引导时启动或停止)。该 High Availability 软件会负责所有服务的启动或停止操作。

如果当服务已在群集控制下运行后您需要执行测试或维护任务,请确保先将资源、节点或整个群集置于维护模式,然后再进行手动处理。有关详细信息,请参见 第 28.2 节 “用于维护任务的不同选项”

重要
重要:资源 ID 和节点名称

群集资源和群集节点的名称应该不同。否则,Hawk2 将会失败。

6.4.1 使用 Hawk2 创建原始资源

要创建最基本类型的资源,请执行以下操作:

过程 6.2︰ 使用 Hawk2 添加原始资源
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 从左侧导航栏中,选择配置 › 添加资源 › 原始资源

  3. 输入唯一的资源 ID

  4. 如果存在可以根据其进行资源配置的资源模板,请选择相应的模板

  5. 选择要使用的资源代理servicelsbstonithocfsystemd。有关详细信息,请参见第 6.2 节 “支持的资源代理类别”

  6. 如果选择了 ocf 作为类,则指定 OCF 资源代理的提供程序。OCF 规范允许多个供应商供应相同的资源代理。

  7. 类型列表中,选择要使用的资源代理(例如 IPaddrFilesystem)。将显示该资源代理的简短描述。

    注意
    注意

    类型列表中提供的选项取决于您选择的(对于 OCF 资源还取决于提供程序中选择的内容)。

    Hawk2 - 原始资源
    图 6.1︰ Hawk2 - 原始资源
  8. 指定资源基本信息后,Hawk2 会显示以下类别。按照 Hawk2 的建议保留这些类别,或根据需要对其进行编辑。

    参数(实例属性)

    确定资源控制的服务实例。创建资源时,Hawk2 会自动显示所有必要的参数。对这些参数进行编辑,以便拥有有效的资源配置。

    有关详细信息,请参见第 6.13 节 “实例属性(参数)”

    操作

    为监控资源所需。创建资源时,Hawk2 会显示最重要的资源操作(startmonitorstop)。

    有关详细信息,请参见第 6.14 节 “资源操作”

    元属性

    告知 CRM 如何处理特定资源。创建资源时,Hawk2 会自动列出该资源的重要元属性,例如,定义资源初始状态的 target-role 属性。默认情况下,该属性设置为 Stopped,这样资源便不会立即启动。

    有关详细信息,请参见第 6.12 节 “资源选项(元属性)”

    利用率

    告知 CRM 某个资源需从节点获取的容量。

    有关详细信息,请参见第 7.10.1 节 “使用 Hawk2 根据资源负载影响放置资源”

  9. 单击创建以完成配置。如果操作成功,屏幕顶部会显示一条消息。

6.4.2 使用 crmsh 创建原始资源

过程 6.3︰ 使用 crmsh 添加原始资源
  1. root 用户身份登录并启动 crm 工具:

    # crm configure
  2. 配置原始 IP 地址:

    crm(live)configure# primitive myIP IPaddr \
          params ip=127.0.0.99 op monitor interval=60s

    上一命令配置了名称为 原始资源myIP。需要选择一个类别(此处为 ocf)、提供方 (heartbeat) 和类型 (IPaddr)。此外,此原始资源还需要其他参数,如 IP 地址。根据设置更改地址。

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

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

    crm(live)configure# commit

6.5 创建资源组

某些群集资源依赖于其他组件或资源,它们要求每个组件或资源都按特定顺序启动,并与其依赖的资源一起在同一服务器上运行。要简化此配置,可以使用群集资源组。

可以使用 Hawk2 或 crmsh 来创建资源组。

例 6.1︰ Web 服务器的资源组

资源组示例可以是需要 IP 地址和文件系统的 Web 服务器。在本例中,每个组件都是组成群集资源组的一个单独资源。资源组将在一台或多台服务器上运行。在发生软件或硬件故障时,资源组会将故障转移到群集中的另一台服务器,这一点与单个群集资源类似。

组资源
图 6.2︰ 组资源

组具有以下属性:

启动和停止

资源按其显示顺序启动,并按相反顺序停止。

相关性

如果组中某个资源在某处无法运行,则该组中位于其之后的任何资源都不允许运行。

内容

组可能仅包含一些原始群集资源。组必须包含至少一个资源,否则配置无效。要引用组资源的子项,请使用子项 ID 而不是组 ID。

限制

尽管可以在约束中引用组的子项,但一般最好使用组的名称。

粘性

粘性在组中可以累加。组中每个活动成员的粘性值都会影响组的总值。因此,如果 resource-stickiness 的默认值是 100,且组中有 7 个成员(其中 5 个成员处于活动状态),那么整个组将首选其当前位置(分数为 500)。

资源监控

要为组启用资源监控,必须为组中每个要监控的资源分别配置监控。

6.5.1 使用 Hawk2 创建资源组

注意
注意:空组

组必须包含至少一个资源,否则配置无效。创建组时,Hawk2 允许您创建多个原始资源并将它们添加到组中。

过程 6.4︰ 使用 Hawk2 添加资源组
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 从左侧导航栏中,选择配置 › 添加资源 › 

  3. 输入唯一的组 ID

  4. 要定义组成员,请选择子项列表中的一项或多项。通过使用右侧的手柄图标将组成员拖放为需要的顺序对其进行重新排序。

  5. 根据需要修改或添加元属性

  6. 单击创建以完成配置。如果操作成功,屏幕顶部会显示一条消息。

Hawk2 - 资源组
图 6.3︰ Hawk2 - 资源组

6.5.2 使用 crmsh 创建资源组

以下示例创建了两个原始资源(一个 IP 地址和一个电子邮件资源)。

过程 6.5︰ 使用 crmsh 添加资源组
  1. 以系统管理员的身份运行 crm 命令。提示符会切换为 crm(live)

  2. 配置这两个原始资源:

    crm(live)# configure
    crm(live)configure# primitive Public-IP ocf:heartbeat:IPaddr2 \
        params ip=1.2.3.4 \
        op monitor interval=10s
    crm(live)configure# primitive Email systemd:postfix \
        op monitor interval=10s
  3. 以正确顺序按其相关标识符对原始资源进行分组:

    crm(live)configure# group g-mailsvc Public-IP Email

6.6 创建克隆资源

您可能希望某些资源在群集的多个节点上同时运行。为此,必须将资源配置为克隆资源。可以配置为克隆的资源示例包括群集文件系统(如 OCFS2)。可以克隆提供的任何资源。资源的代理支持此操作。克隆资源的配置甚至也有不同,具体取决于资源驻留的节点。

资源克隆有三种类型:

匿名克隆

这是最简单的克隆类型。这种克隆类型在所有位置上的运行方式都相同。因此,每台计算机上只能有一个匿名克隆实例是活动的。

全局唯一克隆

这些资源各不相同。一个节点上运行的克隆实例与另一个节点上运行的实例不同,同一个节点上运行的任何两个实例也不同。

可升级克隆(多状态资源)

这些资源的活动实例分为两种状态:主动和被动。这些状态有时也称为主要和次要。可升级克隆可以是匿名的,也可以是全局唯一。有关详细信息,请参见第 6.7 节 “创建可升级克隆资源(多状态资源)”

克隆资源必须正好包含一组或一个常规资源。

配置资源监控或约束时,克隆资源与简单资源具有不同的要求。有关细节,请参见 https://www.clusterlabs.org/pacemaker/doc/ 上的 Pacemaker Explained

可以使用 Hawk2 或 crmsh 来创建克隆资源。

6.6.1 使用 Hawk2 创建克隆资源

注意
注意:克隆资源的子资源

克隆资源可以包含原始资源或组作为子资源。在 Hawk2 中,创建克隆资源时不能创建或修改子资源。添加克隆资源之前,先创建子资源并根据需要配置它们。

过程 6.6︰ 使用 Hawk2 添加克隆资源
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 从左侧导航栏中,选择配置 › 添加资源 › 克隆

  3. 输入唯一的克隆 ID

  4. 子资源列表中,选择要作为克隆子资源的原始资源或组。

  5. 根据需要修改或添加元属性

  6. 单击创建以完成配置。如果操作成功,屏幕顶部会显示一条消息。

Hawk2 - 克隆资源
图 6.4︰ Hawk2 - 克隆资源

6.6.2 使用 crmsh 创建克隆资源

要创建匿名克隆资源,首先需创建一个原始资源,然后使用 clone 命令来引用它。

过程 6.7︰ 使用 crmsh 添加克隆资源
  1. root 用户身份登录,然后启动 crm 交互式外壳:

    # crm configure
  2. 配置原始资源,例如:

    crm(live)configure# primitive Apache apache
  3. 克隆原始资源:

    crm(live)configure# clone cl-apache Apache

6.7 创建可升级克隆资源(多状态资源)

可升级克隆(以前称为多状态资源)是一种特殊的克隆。它们可让实例处于两种运行模式之一(主要或次要)。可升级克隆只能包含一个组或一个常规资源。

配置资源监控或约束时,可升级克隆的要求与简单资源不同。有关细节,请参见 https://www.clusterlabs.org/pacemaker/doc/ 上的 Pacemaker Explained

可以使用 Hawk2 或 crmsh 来创建可升级克隆资源。

6.7.1 使用 Hawk2 创建可升级克隆资源

注意
注意:可升级克隆资源的子资源

可升级克隆资源可以包含原始资源或组作为子资源。在 Hawk2 中,创建可升级克隆资源时不能创建或修改子资源。添加可升级克隆资源之前,请先创建子资源并根据需要配置它们。请参阅第 6.4.1 节 “使用 Hawk2 创建原始资源”第 6.5.1 节 “使用 Hawk2 创建资源组”

过程 6.8︰ 使用 Hawk2 添加可升级克隆资源
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 从左侧导航栏中,选择配置 › 添加资源 › 多状态

  3. 输入唯一的多状态 ID

  4. 子资源列表中,选择要作为多状态资源的子资源的原始资源或组。

  5. 根据需要修改或添加元属性

  6. 单击创建以完成配置。如果操作成功,屏幕顶部会显示一条消息。

6.7.2 使用 crmsh 创建可升级克隆资源

要创建可升级克隆资源,首先要创建一个原始资源,然后再创建可升级克隆资源。可升级克隆资源必须至少支持升级和降级操作。

过程 6.9︰ 使用 crmsh 添加可升级克隆资源
  1. root 用户身份登录,然后启动 crm 交互式外壳:

    # crm configure
  2. 配置原始资源。必要时更改时间间隔:

    crm(live)configure# primitive my-rsc ocf:myCorp:myAppl \
        op monitor interval=60 \
        op monitor interval=61 role=Promoted
  3. 创建可升级克隆资源:

    crm(live)configure# clone clone-rsc my-rsc meta promotable=true

6.8 创建资源模板

如果希望创建具有类似配置的多个资源,则定义资源模板是最简单的方式。定义好模板后,就可以在原始资源或特定类型的约束中引用它,如第 7.3 节 “资源模板和约束”中所述。

如果在原始资源中引用了模板,该原始资源会继承模板中定义的所有操作、实例属性(参数)、元属性和利用率属性。此外,还可以为原始资源定义特定的操作或属性。如果在模板和原始资源中都定义了以上内容,原始资源中定义的值将优先于模板中定义的值。

可以使用 Hawk2 或 crmsh 来创建资源模板。

6.8.1 使用 Hawk2 创建资源模板

配置资源模板就如同配置原始资源一样。

过程 6.10︰ 添加资源模板
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 从左侧导航栏中,选择配置 › 添加资源 › 模板

  3. 输入唯一的资源 ID

  4. 按照过程 6.2 “使用 Hawk2 添加原始资源”中的指导从步骤 5 开始。

6.8.2 使用 crmsh 创建资源模板

使用 rsc_template 命令可以熟悉其语法:

# crm configure rsc_template
 usage: rsc_template <name> [<class>:[<provider>:]]<type>
        [params <param>=<value> [<param>=<value>...]]
        [meta <attribute>=<value> [<attribute>=<value>...]]
        [utilization <attribute>=<value> [<attribute>=<value>...]]
        [operations id_spec
            [op op_type [<attribute>=<value>...] ...]]

例如,以下命令将会根据 ocf:heartbeat:Xen 资源和一些默认值及操作新建一个名为 BigVM 的资源模板:

crm(live)configure# rsc_template BigVM ocf:heartbeat:Xen \
   params allow_mem_management="true" \
   op monitor timeout=60s interval=15s \
   op stop timeout=10m \
   op start timeout=10m

定义新资源模板后,可以在原始资源中使用它,或在顺序、共置或 rsc_ticket 约束中引用该模板。要引用资源模板,请使用 @ 符号:

crm(live)configure# primitive MyVM1 @BigVM \
   params xmfile="/etc/xen/shared-vm/MyVM1" name="MyVM1"

新的原始资源 MyVM1 将继承 BigVM 资源模板中的所有配置。例如,上述两者的等效配置有:

crm(live)configure# primitive MyVM1 Xen \
   params xmfile="/etc/xen/shared-vm/MyVM1" name="MyVM1" \
   params allow_mem_management="true" \
   op monitor timeout=60s interval=15s \
   op stop timeout=10m \
   op start timeout=10m

如果希望重写一些选项或操作,只需将它们添加到您的(原始)定义中。例如,下面这个新的原始资源 MyVM2 会让监控操作的超时增加一倍,而其他值保持不变:

crm(live)configure# primitive MyVM2 @BigVM \
   params xmfile="/etc/xen/shared-vm/MyVM2" name="MyVM2" \
   op monitor timeout=120s interval=30s

资源模板可以在约束中引用,以表示所有原始资源都派生自该模板。这有助于生成更加清晰明了的群集配置。除了位置约束外,允许在所有约束中进行资源模板引用。共置约束不能包含多次模板引用。

6.9 创建 STONITH 资源

重要
重要:不支持无 STONITH 的配置
  • 您必须为群集配置节点屏蔽机制。

  • 全局群集选项 stonith-enabledstartup-fencing 必须设置为 true。如果您更改这些选项,将会失去支持。

默认情况下,全局群集选项 stonith-enabled 设置为 true。如果未定义 STONITH 资源,群集会拒绝启动任何资源。配置一个或多个 STONITH 资源以完成 STONITH 设置。虽然 STONITH 资源的配置过程与其他资源类似,但它们的行为在某些方面有所不同。有关细节,请参见第 12.3 节 “STONITH 资源和配置”

可以使用 Hawk2 或 crmsh 来创建 STONITH 资源。

6.9.1 使用 Hawk2 创建 STONITH 资源

要为 SBD、libvirt (KVM/Xen) 或 vCenter/ESX 服务器添加 STONITH 资源,最简单的方式就是使用 Hawk2 向导。

过程 6.11︰ 使用 Hawk2 添加 STONITH 资源
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 从左侧导航栏中,选择配置 › 添加资源 › 原始资源

  3. 输入唯一的资源 ID

  4. 列表,选择资源代理类 stonith

  5. 类型列表中,选择用于控制 STONITH 设备的 STONITH 插件。该插件的简短描述即会显示。

  6. Hawk2 会自动显示该资源必需的参数。为每个参数输入值。

  7. Hawk2 会显示最重要的资源操作并建议默认值。如果不修改任何设置,Hawk2 会在您确认后添加建议的操作及默认值。

  8. 如无更改必要,请保留默认的元属性设置。

    Hawk2 - STONITH 资源
    图 6.5︰ Hawk2 - STONITH 资源
  9. 确认更改以创建 STONITH 资源。

    如果操作成功,屏幕顶部会显示一条消息。

要完成屏蔽配置,请添加约束。有关详细信息,请参考 第 12 章 “屏障和 STONITH

6.9.2 使用 crmsh 创建 STONITH 资源

过程 6.12︰ 使用 crmsh 添加 STONITH 资源
  1. root 用户身份登录,然后启动 crm 交互式外壳:

    # crm
  2. 使用以下命令获取所有 STONITH 类型的列表:

    crm(live)# ra list stonith
    apcmaster                  apcmastersnmp              apcsmart
    baytech                    bladehpi                   cyclades
    drac3                      external/drac5             external/dracmc-telnet
    external/hetzner           external/hmchttp           external/ibmrsa
    external/ibmrsa-telnet     external/ipmi              external/ippower9258
    external/kdumpcheck        external/libvirt           external/nut
    external/rackpdu           external/riloe             external/sbd
    external/vcenter           external/vmware            external/xen0
    external/xen0-ha           fence_legacy               ibmhmc
    ipmilan                    meatware                   nw_rpc100s
    rcd_serial                 rps10                      suicide
    wti_mpc                    wti_nps
  3. 从以上列表中选择 STONITH 类型并查看可用的选项列表。使用以下命令:

    crm(live)# ra info stonith:external/ipmi
    IPMI STONITH external device (stonith:external/ipmi)
    
    ipmitool based power management. Apparently, the power off
    method of ipmitool is intercepted by ACPI which then makes
    a regular shutdown. In case of a split brain on a two-node,
    it may happen that no node survives. For two-node clusters,
    use only the reset method.
    
    Parameters (* denotes required, [] the default):
    
    hostname (string): Hostname
       The name of the host to be managed by this STONITH device.
    ...
  4. 使用 stonith 类别(您在步骤 3 中选择的类型)和所需的相应参数创建 STONITH 资源,例如:

    crm(live)# configure
    crm(live)configure# primitive my-stonith stonith:external/ipmi \
       params hostname="alice" \
       ipaddr="192.168.1.221" \
       userid="admin" passwd="secret" \
       op monitor interval=60m timeout=120s

6.10 配置资源监控

如果要确保资源正在运行,必须为其配置资源监控。可以使用 Hawk2 或 crmsh 来配置资源监控功能。

如果资源监控程序检测到故障,将发生以下情况:

  • 根据 /etc/corosync/corosync.conflogging 部分指定的配置生成日志文件消息。

  • 故障会在群集管理工具(Hawk2、crm status)中和 CIB 状态部分反映出来。

  • 群集会启动重要的恢复操作,可能包括停止资源以修复故障状态,以及在本地或其他节点上重启动资源。资源也可能不会重启动,具体取决于配置和群集状态。

如果不配置资源监控,系统不会告知您资源成功启动后发生的故障,并且群集始终将资源显示为健康状况良好。

通常,资源仅会在运行时受到群集的监控。但是,为了检测并发违例,还需为停止的资源配置监控。要进行资源监控,请指定超时和/或启动延迟值及间隔。间隔告诉 CRM 检查资源状态的频率。您还可以设置特定参数,例如为 startstop 操作设置 timeout

有关监控操作参数的详细信息,请参见第 6.14 节 “资源操作”

6.10.1 使用 Hawk2 配置资源监控功能

过程 6.13︰ 添加和修改操作
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 过程 6.2 “使用 Hawk2 添加原始资源”中所述添加资源,或选择要编辑的现有原始资源。

    Hawk2 会自动显示最重要的操作monitorstartstop)并建议默认值。

    要查看属于每个建议值的属性,请将鼠标悬停在相应的值上。

    在 Operations 列表中的 monitor 操作旁,将鼠标指针悬停在数字 20 上会显示这是 timeout 属性的值。
    图 6.6︰ 操作值
  3. 要更改针对 startstop 操作建议的 timeout 值,请执行以下操作:

    1. 单击操作旁边的钢笔图标。

    2. 在打开的对话框中,为 timeout 参数输入其他值(例如 10),然后确认更改。

  4. 要更改针对 操作建议的间隔monitor值,请执行以下操作:

    1. 单击操作旁边的钢笔图标。

    2. 在打开的对话框中,为监控 interval 输入不同的值。

    3. 要配置资源停止时针对资源的监控,请执行以下操作:

      1. 从下面的空下拉框中选择 role 这一项。

      2. role 下拉框中选择 Stopped

      3. 单击应用确认更改并关闭操作对话框。

  5. 在资源配置屏幕中确认更改。如果操作成功,屏幕顶部会显示一条消息。

要查看资源故障,请切换到 Hawk2 中的状态屏幕,然后选择您感兴趣的资源。在操作列中,单击向下箭头图标并选择最近的事件。随后打开的对话框会列出对资源执行的最近操作。失败事件显示为红色。要查看资源细节,请单击操作列中的放大镜图标。

Hawk2 - 资源细节
图 6.7︰ Hawk2 - 资源细节

6.10.2 使用 crmsh 配置资源监控功能

要监控资源,有两种可能性:使用 op 关键字或 monitor 命令定义监控操作。以下示例配置了一个 Apache 资源,并使用 op 关键字指定每隔 60 秒监控一次该资源:

crm(live)configure# primitive apache apache \
  params ... \
  op monitor interval=60s timeout=30s

使用以下命令也可以实现相同的目的:

crm(live)configure# primitive apache apache \
   params ...
 crm(live)configure# monitor apache 60s:30s
监控已停止的资源

通常,资源仅会在运行时受到群集的监控。但是,为了检测并发违例,还需为停止的资源配置监控。例如:

crm(live)configure# primitive dummy1 Dummy \
     op monitor interval="300s" role="Stopped" timeout="10s" \
     op monitor interval="30s" timeout="10s"

当资源 dummy1 处于 role="Stopped" 状态时,此配置每 300 秒就会触发一次对该资源的监控操作。当该资源运行时,将每隔 30 秒对其监控一次。

检测

CRM 会对每个节点上的各个资源执行初始监控,也称为 probe。清理资源之后也会执行探测。如果为资源定义了多项监控操作,CRM 会选择间隔时间最短的一项操作,并会使用其超时值作为默认的探测超时值。如果未配置任何监控操作,则将应用整个群集的默认值。默认值为 20 秒(如果未通过配置 op_defaults 参数指定其他值)。如果您不想依赖自动计算或 op_defaults 值,请为此资源的探测定义具体的监控操作。为此,可以添加一个监控操作并将 interval 设置为 0,例如:

crm(live)configure# primitive rsc1 ocf:pacemaker:Dummy \
     op monitor interval="0" timeout="60"

无论 op_defaults 中定义的全局超时或已配置的任何其他操作超时为何值,rsc1 的探测都会在 60s 后超时。如果指定相应资源的探测时未设置 interval="0",CRM 会自动检查是否为该资源定义了任何其他监控操作,并如上文所述计算探测的超时值。

6.11 从文件加载资源

可从本地文件或网络 URL 加载部分或全部配置。可定义三种不同方法:

replace

此选项会将当前配置替换为新的源配置。

update

此选项会尝试导入源配置。它会向当前配置添加新项目或更新现有项目。

push

此选项会将内容从来源导入到当前配置中(与 update 相同)。不过,它会去除在新配置中不可用的对象。

要从文件 mycluster-config.txt 加载新配置,请使用以下语法:

# crm configure load push mycluster-config.txt

6.12 资源选项(元属性)

您可以为添加的每个资源定义选项。群集使用这些选项来决定资源的行为,它们会告知 CRM 如何处理特定的资源。可以使用 crm_resource --meta 命令或 Hawk2 来设置资源选项。

下面列出了一些常见选项:

priority

如果无法让所有资源都处于活动状态,群集会停止优先级较低的资源,以便让优先级较高的资源保持活动状态。

默认值为 0.

target-role

群集应在哪种状态下尝试保留此资源?允许的值:StoppedStartedUnpromotedPromoted

默认值为 Started.

is-managed

是否允许群集启动和停止资源?允许的值:truefalse。如果该值设置为 false,则仍会监控资源的状态,并会报告任何故障。这与将资源设置为 maintenance="true" 的情况不同。

默认值为 true.

maintenance

是否可以手动处理资源?允许的值:truefalse。如果设置为 true,则所有资源将变为不受管状态:群集将停止监控这些资源,因此不知道它们的状态。您可以停止或重启动群集资源,不必等待群集尝试重启动它们。

默认值为 false.

resource-stickiness

资源留在所处位置的自愿程度如何?

各克隆实例的默认值为 1,所有其他资源的默认值为 0

migration-threshold

节点上的此资源应发生多少故障后才能确定该节点没有资格主管此资源?

默认值为 INFINITY.

multiple-active

如果群集发现资源在多个节点上处于活动状态,应执行什么操作?允许的值:block(将资源标记为不受管)、stop_startstop_only

默认值为 stop_start.

failure-timeout

等待多少秒后才能像未发生故障一样运行(并在可能的情况下允许资源回到之前发生故障的节点上)?

默认值为 0(禁用)。

allow-migrate

是否允许实时迁移支持 migrate_tomigrate_from 操作的资源。如果值设置为 true,则可在不丢失状态的情况下迁移资源。如果值设置为 false,将会在第一个节点上关闭资源,并在第二个节点上重启动该资源。

ocf:pacemaker:remote 资源的默认值为 true,所有其他资源的默认值为 false

allow-unhealthy-nodes

允许资源在节点上运行,即使节点的健康状况分数会阻止它运行也不例外。

默认值为 false

remote-node

此资源定义的远程节点的名称。这会将资源作为远程节点启用,同时定义唯一的名称用于标识该远程节点。如果未设置其他参数,此值还将作为要通过 remote-port 端口连接的主机名。

默认情况下,此选项为禁用状态。

警告
警告:使用唯一 ID

此值不得与任何现有资源 ID 或节点 ID 重复。

remote-port

guest 与 pacemaker_remote 建立连接时使用的自定义端口。

默认值为 3121.

remote-addr

当远程节点的名称不是 guest 的主机名时,要连接的 IP 地址或主机名。

默认值为 remote-node 设置的值。

remote-connect-timeout

等待中的 guest 连接经过多长时间后超时?

默认值为 60s.

6.13 实例属性(参数)

可为所有资源类的脚本指定参数,这些参数可确定脚本的行为方式和所控制的服务实例。如果资源代理支持参数,则可使用 crm_resource 命令或 Hawk2 添加这些参数。在 crm 命令行实用程序和 Hawk2 中,实例属性分别称为 paramsParameter。通过以 root 身份执行以下命令,可找到 OCF 脚本支持的实例属性列表:

# crm ra info [class:[provider:]]resource_agent

或(无可选部分):

# crm ra info resource_agent

输出列出了所有支持的属性及其用途和默认值。

注意
注意:组、克隆或可升级克隆的实例属性

请注意,组、克隆和可升级克隆资源没有实例属性。但是,组、克隆或可升级克隆的子级会继承任何实例属性集。

6.14 资源操作

默认情况下,群集不会确保资源的健康状况一直良好。要指示群集确保资源能正常工作,需要将监控操作添加到资源定义中。可为所有类或资源代理添加监控操作。

监控操作可能具有以下属性:

id

您的操作名称,必须唯一。(ID 不会显示。)

name

要执行的操作。常用的值:monitorstartstop

interval

执行操作的频率,以秒为单位。

timeout

需要等待多久才能声明操作失败。

requires

需要满足哪些条件才会发生此操作。允许的值:nothingquorumfencing。默认值取决于是否启用屏蔽以及资源的类别是否为 stonith。对于 STONITH 资源,默认值为 nothing

on-fail

此操作失败时执行的操作。允许的值:

  • ignore:假装资源没有失败。

  • block:不对资源执行任何进一步操作。

  • stop:停止资源并且不在其他位置启动该资源。

  • restart:停止资源并再次启动资源(可能在不同的节点上)。

  • fence:关闭资源故障的节点 (STONITH)。

  • standby:将所有资源从资源失败的节点上移走。

enabled

如果值为 false,将操作视为不存在。允许的值:truefalse

role

仅当资源具有此角色时才运行操作。

record-pending

可全局设置或为单独资源设置。使 CIB 反映资源上正在进行中的操作的状态。

description

操作描述。