6.6. リソースの動作

リソースに健全性を維持させるためリソースの定義にモニタリングの動作を追加することができます。モニタリングの動作を指定しないと、pcs コマンドはデフォルトでモニタリングの動作を作成します。モニタリングの間隔はリソースエージェントで確定されます。リソースエージェントでデフォルトのモニタリング間隔が提供されない場合は pcs コマンドにより 60 秒間隔のモニタリング動作が作成されます。
表6.4「動作のプロパティ」 にリソースのモニタリング動作のプロパティを示します。

表6.4 動作のプロパティ

フィールド説明
id
動作に固有となる名前、動作を設定するとシステムによって割り当てられる
name
実行する動作、一般的な値:monitorstartstop
interval
ゼロ以外の値に設定した場合、秒単位で繰り返しを行う繰り返し操作が作成されます。ゼロ以外の値は、アクション namemonitor に設定される場合にのみ意味を成します。繰り返しの操作は、リソースの起動が完了してからすぐに実行されます。後続のモニターアクションが、以前のモニターアクションが完了したときに開始されるようにスケジュール設定されます。例えば、interval=20s のモニターアクションが 01:00:00 に実行される場合は、次のモニターアクションは 01:00:20 ではなく、最初のモニターアクションが完了してから 20 秒後に実行されます。
デフォルト値である 0 に設定すると、このパラメーターにより、クラスターは作成される操作に使用する値を与えられるようになります。例えば、interval が 0 に設定されると、操作の namestart に設定されます。timeout の値が 40 に設定されると、このリソースが起動するときに Pacemaker は 40 秒のタイムアウトを使用します。0 間隔の monitor 操作では、Pacemaker がスタートアップで行うプローブに timeout/on-fail/enabled の値を設定し、デフォルトが適切でないときに、すべてのリソースの現在のステータスを取得します。
timeout
操作がこのパラメーターで設定された時間内に完了しない場合は、その操作が中止され、エラーとみなされます。デフォルトの値は、pcs resource op defaults コマンドで設定した場合は、timeout の値です。設定しない場合は、20 秒になります。操作 (startstop、または monitor など) を実行するのにシステムが許可する以上の時間を必要とするリソースを、お使いのシステムが含む場合は、原因を調べ、実行時間が長いと考えラレル場合には、この値を高く設定することができます。
タイムアウト期間が完了する前に操作が返される場合は、timeout 値はいかなる遅延でもなく、クラスターがタイムアウト時間をすべて待つことにはなりません。
on-fail
この動作が失敗した場合に実行する動作、使用できる値:
* ignore - リソースが失敗していなかったように振る舞う
* block - リソースでこれ以上、一切の動作を行わない
* stop - リソースを停止して別の場所で起動しない
* restart - リソースを停止してから再起動する (おそらく別の場所)
* fence - 失敗したリソースがあるノードを STONITH する
* standby - 失敗したリソースがあるノード上の すべてのリソース を移動させる
STONITH が有効でblock に設定されていると stop 動作のデフォルトは fence になります。これ以外は restart にデフォルト設定されます。
enabled
false に設定するとその動作はないものとして処理される、使用できる値: truefalse

6.6.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)

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

以下のコマンドを使用して、モニタリング操作のグローバルデフォルト値を設定できます。
pcs resource op defaults [options]
たとえば、以下のコマンドはすべてのモニタリング操作に対して timeout 値のグローバルデフォルトを 240 秒に設定します。
# pcs resource op defaults timeout=240s
モニタリング操作の現在設定されているデフォルト値を表示するには、 pcs resource op defaults コマンドをオプションを指定せずに実行します。
たとえば、以下のコマンドはクラスターのモニタリング操作のデフォルト値を表示します。この例では timeout 値は 240 秒に設定されています。
# pcs resource op defaults
timeout: 240s
オプションがクラスターリソース定義で指定されていない場合のみ、クラスターリソースがグローバルデフォルトを使用することに注意してください。デフォルトでは、リソースエージェントは、すべての操作の timeout オプションを定義します。受け入れられるグローバル操作タイムアウト値は、timeout オプションなしでクラスターリソースを作成する必要があります。あるいは、以下のコマンドなどのように、クラスターリソースを更新することで timeout オプションを削除する必要があります。
# pcs resource update VirtualIP op monitor interval=10s
例えば、すべてのモニタリング操作の 240 秒という timeout のグローバルデフォルトを設定してクラスターリソース VirtualIP を更新し、monitor 操作のタイムアウト値を削除すると、リソース VirtualIPstartstopmonitor のタイムアウト値がそれぞれ 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)