第 21 章 资源监控操作

为确保资源健康,您可以在资源的定义中添加监控操作。如果您没有对资源指定监控操作,默认情况下,pcs 命令将创建一个监控操作,间隔由资源代理决定。如果资源代理不提供默认的监控间隔,pcs 命令将创建监控操作,间隔为 60 秒。

下表总结了资源监控操作的属性。

表 21.1. 操作的属性

描述

id

操作的唯一名称。系统在配置操作时分配这个值。

名称

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

interval

如果设置为非零值,则会以这个频率(以秒为单位)重复操作。只有在操作 name 设为 monitor 时,非零值才有意义。资源启动后,将立即执行重复的 monitor 操作,并在上一个监控动作完成后调度后续的 monitor 操作。例如,如果 monitor 操作的 interval=20s 在 01:00:00 执行,则下一次 monitor 操作不会发生在 01:00:20 ,而是在第一个 monitor 操作完成后的 20 秒发生。

如果设置为零(默认值为零),则此参数允许您为集群创建的操作提供值。例如,如果 interval 设为零,则操作的 name 设置为 starttimeout 值设为 40,则 Pacemaker 在启动此资源时将使用 40 秒超时。带有零间隔的 monitor 操作允许您为 Pacemaker 在启动时的探测设置 timeout/on-fail/enabled 值,以便在不需要默认值时获取所有资源的当前状态。

timeout

如果在此参数设置的时间内操作没有完成,操作会被终止并认为它失败。默认值是使用 pcs resource op defaults 命令设置的 timeout 值,如果未设置,则为 20 秒。如果您发现您的系统所包含的资源比系统允许执行操作的时间更长(如 startstopmonitor),请调查其原因,如果您预计需要较长的执行时间,则可以增加这个值。

timeout 值不是任何类型的延迟,如果操作在超时时间用完后返回,则集群也不会等待整个超时时间。

on-fail

在这个操作失败时要执行的操作。允许的值:

* ignore - 假装资源没有失败

* block - 不对资源执行任何进一步的操作

* stop - 停止资源,且不在其它地方启动它

* restart - 停止资源,并重新启动它(可能在不同的节点上)

* fence - STONITH 资源失败的节点

* standby - 将 所有 资源从资源失败的节点移出

* demote - 当资源的 promote 操作失败时,该资源会被降级但不会被完全停止。当资源 monitor 操作失败时,如果 interval 设置为一个非零值,并且 role 设置为 Promoted ,则资源将会降级但不会被完全停止。

当启用了 STONITH 时,stop 操作的默认值为 fence,否则为 block。所有其他操作默认为 restart

enabled

如果为 false,则该操作被视为不存在。允许的值: true,false

21.1. 配置资源监控操作

您可以在使用以下命令创建资源时配置监控操作。

pcs resource create resource_id standard:provider:type|type [resource_options] [op operation_action operation_options [operation_type operation_options]...]

例如,以下命令创建了一个带有监控操作的 IPaddr2 资源:新资源称为 VirtualIPeth2 的 IP 地址为 192.168.0.99,子网掩码为 24。每 30 秒将执行一次监控操作。

# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2 op monitor interval=30s

另外,您可以使用以下命令在现有资源中添加监控操作。

pcs resource op add resource_id operation_action [operation_properties]

使用以下命令删除配置的资源操作。

pcs resource op remove resource_id operation_name operation_properties
注意

您必须指定准确的操作属性才能正确地删除现有的操作。

要更改监控选项的值,您可以更新资源。例如,您可以使用以下命令创建 VirtualIP

# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2

默认情况下,这个命令会创建这些操作。

Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s)
            stop interval=0s timeout=20s (VirtualIP-stop-timeout-20s)
            monitor interval=10s timeout=20s (VirtualIP-monitor-interval-10s)

要改变停止超时操作,请执行以下命令。

# pcs resource update VirtualIP op stop interval=0s timeout=40s

# pcs resource config VirtualIP
 Resource: VirtualIP (class=ocf provider=heartbeat type=IPaddr2)
  Attributes: ip=192.168.0.99 cidr_netmask=24 nic=eth2
  Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s)
              monitor interval=10s timeout=20s (VirtualIP-monitor-interval-10s)
              stop interval=0s timeout=40s (VirtualIP-name-stop-interval-0s-timeout-40s)