第20章 リソースの監視操作

リソースを健全な状態に保つために、リソースの定義に監視操作を追加できます。リソースの監視動作を指定しないと、デフォルトでは、pcs コマンドにより監視動作が作成されします。監視の間隔はリソースエージェントにより決定します。リソースエージェントでデフォルトの監視間隔が提供されない場合は、pcs コマンドにより 60 秒間隔の監視動作が作成されます。

表20.1「動作のプロパティー」 に、リソースの監視動作のプロパティーを示します。

表20.1 動作のプロパティー

フィールド説明

id

動作の一意の名前。システムは、操作を設定する際に、これを割り当てます。

name

実行する動作。一般的な値は、monitorstartstop です。

interval

値をゼロ以外に設定すると、この周波数で繰り返される反復操作 (秒単位) が作成されます。ゼロ以外の値は、アクション monitor に設定されている場合に限り有効になります。監視の反復アクションは、リソースの起動が完了するとすぐに実行し、その後の監視アクションの開始は、前の監視アクションが完了した時点でスケジュールされます。たとえば、interval=20s の監視アクションを 01:00:00 に実行すると、次の監視アクションは 01:00:20 ではなく、最初の監視アクションが完了してから 20 秒後に発生します。

この値を、デフォルト値であるゼロに設定すると、このパラメーターで、クラスターが作成した操作に使用する値を指定できます。たとえば、interval をゼロに設定し、操作の namestartに設定し、timeout 値を 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: リソースに対する 昇格 アクションが失敗すると、リソースは降格されますが、完全に停止されません。リソースの monitor アクションが失敗した場合、interval がゼロ以外の値に設定され、roleMaster に設定されている場合、リソースは降格されますが、完全に停止されません。

STONITH が有効な場合、stop 動作のデフォルトは fence になります。そうでない場合は block となります。その他のすべての操作は、デフォルトで restart です。

enabled

falseの場合、操作は存在しないものとして処理されます。使用できる値は true または false です。

20.1. リソースの監視動作の設定

次のコマンドでリソースを作成すると、監視操作を設定できます。

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

たとえば、次のコマンドは、監視操作付きの IPaddr2 リソースを作成します。新しいリソースには VirtualIP という名前が付けられ、eth2 で 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)

stop の timeout 操作を変更するには、以下のコマンドを実行します。

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

# pcs resource show 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)

20.2. グローバルリソース操作のデフォルトの設定

Red Hat Enterprise Linux 8.3 では、pcs resource op defaults update コマンドを使用して、すべてのリソースのリソース操作のデフォルト値を変更できます。次のコマンドは、すべての監視操作に対して、timeout 値のグローバルデフォルトを 240 秒に設定します。

# pcs resource op defaults update timeout=240s

以前の RHEL 8 リリースのすべてのリソース操作のデフォルトを設定する元の pcs resource defaults name=value コマンドは、複数のデフォルトが設定されない限りサポートされます。ただし、pcs resource op defaults update が、コマンドの推奨されるバージョンになりました。

20.2.1. リソース固有の操作値の上書き

クラスターリソース定義でオプションが指定されていない場合に限り、クラスターリソースがグローバルデフォルトを使用することに注意してください。デフォルトでは、リソースエージェントがすべての操作の timeout オプションを定義します。グローバル操作のタイムアウト値を有効にするには、timeout オプションを明示的に指定せずにクラスターリソースを作成するか、次のコマンドのように、クラスターリソースを更新して timeout オプションを削除する必要があります。

# pcs resource update VirtualIP op monitor interval=10s

たとえば、すべての監視操作に、グローバルデフォルトの timeout 値 240 秒を設定し、クラスターリソース VirtualIP を更新して、monitor 操作のタイムアウト値を削除すると、リソース VirtualIP には、startstop、および monitor の操作のタイムアウト値が、それぞれ 20 秒、40 秒、240 秒に設定されます。タイムアウト操作のグローバルなデフォルト値は、ここでは monitor にのみ適用されます。ここでは、前のコマンドにより、デフォルトの timeout オプションが削除されています。

# pcs resource show 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 (VirtualIP-monitor-interval-10s)
               stop interval=0s timeout=40s (VirtualIP-name-stop-interval-0s-timeout-40s)

20.2.2. リソースセットのリソース操作のデフォルト値の変更 (RHEL 8.3 以降)

Red Hat Enterprise Linux 8.3 では、pcs resource op defaults set create コマンドを使用して、複数のリソース操作のデフォルトセットを作成できます。これにより、resource 式および操作式を含むルールを指定できます。RHEL 8.3 では、以下のコマンドで指定するルールで、andor および括弧を含む リソース および操作の式のみが許可されます。RHEL 8.4 以降では、Pacemaker でサポートされているその他のルール表現もすべて許可されます。

このコンマでは、特定タイプの全リソースにデフォルトのリソース操作値を設定できます。たとえば、バンドルが使用されている場合に Pacemaker によって作成される暗黙的な podman リソースを設定できるようになりました。

以下のコマンドは、すべての podman リソースに対して、デフォルトのタイムアウト値を 90s に設定します。この例では、::podman は任意のクラスのリソース、任意のプロバイダー、podman タイプのリソースを指します。

リソース操作のデフォルトの名前である id オプションは必須ではありません。このオプションを設定しないと、pcs により ID が自動的に生成されます。この値を設定すると、よりわかりやすい名前を指定できます。

# pcs resource op defaults set create id=podman-timeout meta timeout=90s rule resource ::podman

以下のコマンドは、すべてのリソースの stop 操作に、デフォルトのタイムアウト値を 120s に設定します。

# pcs resource op defaults set create id=stop-timeout meta timeout=120s rule op stop

特定のタイプのすべてのリソースに、特定の操作にデフォルトのタイムアウト値を設定できます。以下の例では、すべての podman リソースの stop 操作に、デフォルトのタイムアウト値を 120s に設定します。

# pcs resource op defaults set create id=podman-stop-timeout meta timeout=120s rule resource ::podman and op stop

20.2.3. 現在設定されているリソース操作のデフォルト値の表示

pcs resource op defaults コマンドは、指定したルールを含む、現在設定されているリソース操作のデフォルト値の一覧を表示します。

以下のコマンドは、すべての podman リソースに対するデフォルトのタイムアウト値である 90s で設定され、リソース操作セットの ID が podman-timeout として設定されているクラスターのデフォルトの操作値を表示します。

# pcs resource op defaults
Meta Attrs: podman-timeout
  timeout=90s
  Rule: boolean-op=and score=INFINITY
    Expression: resource ::podman

以下のコマンドは、すべての podman リソースに対して stop 操作にデフォルトのタイムアウト値である 120s が設定され、リソース操作セットの ID が podman-stop-timeout として設定されているクラスターのデフォルトの操作値を表示します。

# pcs resource op defaults
Meta Attrs: podman-stop-timeout
  timeout=120s
  Rule: boolean-op=and score=INFINITY
    Expression: resource ::podman
    Expression: op stop

20.3. 複数の監視操作の設定

リソースエージェントが対応する範囲で、1 つのリソースに複数の監視操作を設定できます。これにより、1 分ごとに表面的なヘルスチェックを行い、徐々に頻度を上げてより正確なチェックを行うこともできます。

注記

複数の監視操作を設定する場合は、2 種類の操作が同じ間隔で実行されないように注意してください。

様々なレベルで行う詳細なヘルスチェックに対応する追加の監視操作をリソースに設定する場合は、OCF_CHECK_LEVEL=n オプションを追加します。

たとえば、以下のように IPaddr2 リソースを設定すると、デフォルトでは 10 秒間隔でタイムアウト値が 20 秒の監視操作が作成されます。

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

仮想 IP が、深さ 10 の様々なチェックに対応する場合は、次のコマンドを実行すると、Pacemaker は、通常の 10 秒間隔の仮想 IP チェックに加えて、60 秒ごとに高度な監視チェックを実行します。なお、上述のとおり、追加の監視操作は 10 秒間隔にしないようにしてください。

# pcs resource op add VirtualIP monitor interval=60s OCF_CHECK_LEVEL=10

このページには機械翻訳が使用されている場合があります (詳細はこちら)。