サービスの作成とフェイルオーバーのテスト

サービスを作成してフェイルオーバーをテストするには:

サービスを作成し、通常は、プロセスの開始および停止を処理するリソース・エージェントを実行するように構成します。ほとんどのリソース・エージェントは、Linux Standard Base (LSB)の拡張機能として定義されているOpen Cluster Framework (OCF)仕様に従って作成されています。resource-agentsパッケージには、よく使用されるプロセスのための便利なリソース・エージェントが多数含まれており、よく使用されるデーモンやサービスがまだ実行中かどうかを追跡する様々なハートビート・エージェントなどがあります。

次の例では、Pacemakerのテストのために作成されたDummyリソース・エージェントを使用するサービスが設定されます。このエージェントを使用する理由は、このエージェントが基本的な構成を必要とし、環境やPacemakerで実行する予定のサービスのタイプについて何も想定していないからです。

  1. pcs resource createコマンドを使用して、サービスをリソースとして追加します。

    sudo pcs resource create dummy_service ocf:pacemaker:Dummy op monitor interval=120s

    前の例では、dummy_serviceがこのリソースのサービスに指定された名前です。

    Dummyリソース・エージェントを起動するには、表記(ocf:pacemaker:Dummy)を使用して、これがOCF標準に準拠すること、Pacemakerのネームスペースで実行されること、およびDummyスクリプトを使用する必要があることを指定します。クラスタ化されたファイル・システムのハートビート・モニター・サービスを構成した場合は、ocf:heartbeat:Filesystemリソース・エージェントを使用できます。

    リソースはエージェントのモニター操作を使用するように構成され、サービスのヘルスをチェックする間隔が設定されます。この例では、フェイルオーバーのデモ中にサービスが失敗するのに十分な時間を与えるために、間隔が120秒に設定されています。デフォルトでは、この間隔は通常20秒に設定されますが、サービスのタイプおよび特定の環境に応じて変更できます。

    サービスを作成すると、クラスタはリソース・エージェントの起動コマンドを使用してノード上でリソースを起動します。

  2. リソースの開始および実行ステータスを表示します。次に例を示します。

    sudo pcs status

    次のような出力結果が表示されます。

    Cluster name: pacemaker1
    Stack: corosync
    Current DC: node2 (version 2.1.2-4.0.1.el8_6.2-ada5c3b36e2) - partition with quorum
    Last updated: Wed Jul 13 04:56:27 2022
    Last change: Wed Jul 13 04:56:11 2022 by root via cibadmin on node1
    
    2 nodes configured
    1 resource configured
    
    Online: [ node1 node2 ]
    
    Full list of resources:
    
     dummy_service  (ocf::pacemaker:Dummy): Started node1
    
    Daemon Status:
      corosync: active/disabled
      pacemaker: active/disabled
      pcsd: active/enabled
  3. サービスを直接強制停止することによってサービス障害をシミュレートするには、crm_resourceコマンドを実行します。

    sudo crm_resource --resource dummy_service --force-stop

    crm_resourceコマンドを実行すると、サービスが手動で停止されたことをクラスタが認識しなくなります。

  4. ノードに障害が発生するまで待機できるように、crm_monコマンドを対話型モードで実行し、Failed Actionsメッセージを調べます。次に例を示します。

    sudo crm_mon

    次のような出力結果が表示されます。

    Stack: corosync
    Current DC: node1 (version 2.1.2-4.0.1.el8_6.2-ada5c3b36e2) - partition with quorum
    Last updated: Wed Jul 13 05:00:27 2022
    Last change: Wed Jul 13 04:56:11 2022 by root via cibadmin on node1
    
    3 nodes configured
    1 resource configured
    
    Online: [ node1 node2 ]
    
    Active resources:
    
    dummy_service   (ocf::pacemaker:Dummy): Started node2
    
    Failed Resource Actions:
    * dummy_service_monitor_120000 on node1 'not running' (7): call=7, status=complete, exitreason='',
        last-rc-change='Wed Jul 13 05:00:11 2022', queued=0ms, exec=0ms

    代替ノードでサービスが再起動されたことがわかります。デフォルトのモニター期間が120秒に設定されているため、その時間いっぱいまで待機しないと、ノードがオフラインになったことを示す通知が表示されないことがあります。

    ヒント:

    [Ctrl]+[C]のキーの組合せを使用すると、任意の時点でcrm_monを終了できます。

  5. サービスが実行されているノードをリブートし、ノード障害発生時にフェイルオーバーも発生するかどうかを確認します。

    corosyncおよびpacemakerサービスをブート時に起動できるようにしていない場合は、次のコマンドを実行して、リブートしたノードでサービスを手動で起動する必要がある場合があります:

    sudo pcs cluster start node1