サービスの作成とフェイルオーバーのテスト
サービスを作成してフェイルオーバーをテストするには:
サービスを作成し、通常は、プロセスの開始および停止を処理するリソース・エージェントを実行するように構成します。 ほとんどのリソース・エージェントは、Linux Standard Base (LSB)の拡張機能として定義されているOpen Cluster Framework (OCF)仕様に従って作成されています。 resource-agentsパッケージには、よく使用されるプロセスのための便利なリソース・エージェントが多数含まれており、よく使用されるデーモンやサービスがまだ実行中かどうかを追跡する様々なハートビート・エージェントなどがあります。
次の例では、Pacemakerのテストのために作成されたDummyリソース・エージェントを使用するサービスが設定されます。 このエージェントを使用する理由は、このエージェントが基本的な構成を必要とし、環境やPacemakerで実行する予定のサービスのタイプについて何も想定していないからです。
-
pcs resource createコマンドを使用して、サービスをリソースとして追加します。
sudo pcs resource create dummy_service ocf:pacemaker:Dummy前の例では、dummy_serviceがこのリソースのサービスに指定された名前です。
Dummyリソース・エージェントを起動するには、表記(
ocf:pacemaker:Dummy)を使用して、これがOCF標準に準拠すること、Pacemakerのネームスペースで実行されること、およびDummyスクリプトを使用する必要があることを指定します。 クラスタ化されたファイル・システムのハートビート・モニター・サービスを構成した場合は、ocf:heartbeat:Filesystemリソース・エージェントを使用できます。サービスを作成すると、クラスタはリソース・エージェントの起動コマンドを使用してノード上でリソースを起動します。
-
pcs statusコマンドを使用して、クラスタとそのリソースのステータスを表示します:sudo pcs status次のサンプル抽出は、コマンド出力を示しています:
Cluster name: pacemaker1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: node1 (version version_information) - partition with quorum * Last updated: Fri Mar 7 13:31:26 2025 on node1 * Last change: Tue Mar 4 14:55:20 2025 by root via root on node1 * 2 nodes configured * 1 resource instance configured Node List: * Online: [ node2 node1 ] Full List of Resources: * dummy_service (ocf:pacemaker:Dummy): Started node1 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled ...前述の出力例では、両方のノードがオンラインであり、サービスがnode1で起動されていることを示しています。
-
サービスが実行されているノードでクラスタを停止して、フェイルオーバーをトリガーします:
sudo pcs cluster stop node1このコマンドは、次の出力例に示すように、PacemakerとCorosyncがノード上で停止されていることを報告します:
node1: Stopping Cluster (pacemaker)... node1: Stopping Cluster (corosync)... -
たとえば、ノード(この例ではnode1)で
pcs cluster statusコマンドを実行して、クラスタが停止していることを確認します:sudo pcs cluster statusこのコマンドは、次の出力例に示すように、クラスタが実行されていないことを報告します:
Error: cluster is not currently running on this node -
他のノード(この例ではnode2)にサインインし、
pcs statusコマンドを実行して、そのノードでサービスが起動されていることを確認します:sudo pcs status次のサンプル抽出は、コマンド出力を示しています:
Cluster name: pacemaker1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: node2 (version version_information) - partition with quorum * Last updated: Fri Mar 7 13:35:11 2025 on node2 * Last change: Tue Mar 4 14:55:20 2025 by root via root on node1 * 2 nodes configured * 1 resource instance configured Node List: * Online: [ node2 ] * OFFLINE: [ node1 ] Full List of Resources: * dummy_service (ocf:pacemaker:Dummy): Started node2 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled ...前述のサンプル出力は、node1がオフラインで、サービスが正常にフェイルオーバーされ、node2で起動されたことを示しています。
-
pcs cluster startコマンドを使用して、オフライン・ノードでクラスタを起動します:sudo pcs cluster start node1 -
ノードがオンラインに戻ったことを確認します:
sudo pcs status次のサンプル抽出は、予想されるコマンド出力を示しています:
Cluster name: pacemaker1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: node2 (version version_information) - partition with quorum * Last updated: Fri Mar 7 13:38:36 2025 on node1 * Last change: Tue Mar 4 14:55:20 2025 by root via root on node1 * 2 nodes configured * 1 resource instance configured Node List: * Online: [ node2 node1] Full List of Resources: * dummy_service (ocf:pacemaker:Dummy): Started node2 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled ...前述のサンプル出力は、node1がオンラインに戻ったことを示しています。