第12章 クラスターリソースの実行順序の決定

リソースが実行する順序を指定する、順序の制約を設定できます。

次は、順序の制約を設定するコマンドの形式です。

pcs constraint order [action] resource_id then [action] resource_id [options]

表12.1「順序の制約のプロパティー」 では、順序の制約を設定する場合のプロパティーとオプションをまとめています。

表12.1 順序の制約のプロパティー

フィールド説明

resource_id

動作を行うリソースの名前。

action

リソースで実行する動作。action プロパティーでは、以下の値が使用できます。

* start - リソースを起動する

* stop - リソースを停止する

* promote - スレーブリソースからマスターリソースにリソースの昇格を行う

* demote - マスターリソースからスレーブリソースにリソースの降格を行う

動作を指定しない場合のデフォルトの動作は start です。

kind オプション

制約の実施方法。kind オプションでは、以下の値が使用できます。

* Optional - 両方のリソースが指定の動作を実行する場合のみ適用されます。オプションの順序の詳細は「勧告的な順序付けの設定」を参照してください。

* mandatory - 制約を常に実施します(デフォルト値)。1 番目に指定したリソースが停止していたり、起動できない場合は、2 番目に指定したリソースが停止します。この強制的な順序付けの詳細は「強制的な順序付けの設定」を参照してください。

* Serialize - 指定するリソースに対して、複数の停止または起動のアクションが同時に発生しないようにします。指定した 1 番目および 2 番目のリソースは、いずれの順序でも起動できますが、片方が完了しないともう片方が開始しません。典型的なユースケースは、リソースの起動によりホストの負荷が高くなる場合です。

symmetrical オプション

true の場合、逆の制約は逆のアクションに適用されます(たとえば、A の開始後に B が開始する場合など)、B が停止する前に B が停止します。kindSerialize である順序制約を対称にすることはできません。デフォルト値は Mandatory および Optional の場合は trueSerialize の場合は false です。

次のコマンドを使用すると、すべての順序の制約からリソースが削除されます。

pcs constraint order remove resource1 [resourceN]...

12.1. 強制的な順序付けの設定

必須順序制約は、最初のリソースに対する最初のアクションが正常に完了しない限り、2 番目のリソースの 2 番目のアクションが開始しないことを示しています。命令できるアクションが stop または start で、昇格可能なクローンが demote および promote とします。たとえば、「A then B」(「start A then start B」と同等) は、A が適切に開始しない限り、B が開始しないことを示しています。順序の制約は、この制約の kind オプションが Mandatory に設定されているか、デフォルトのままに設定されている場合は必須になります。

symmetrical オプションが true に設定されているか、デフォルトのままにすると、逆のアクションの命令は逆順になります。startstop のアクションは対称になり、demotepromote は対称になります。たとえば、対称的に、「promote A then start B」順序は「stop B then demote A」(B が正常に停止するまで A が降格しない) ことを示しています。対称順序は、A の状態を変更すると、B に予定されているアクションが発生すること示しています。たとえば、「A then B」と設定した場合は、失敗により A が再起動すると、B が最初に停止してから、A が停止し、それにより A が開始し、それにより B が開始することを示します。

クラスターは、それぞれの状態変化に対応することに注意してください。2 番目のリソースで停止操作を開始する前に 1 番目のリソースが再起動し、起動状態にあると、2 番目のリソースを再起動する必要がありません。

12.2. 勧告的な順序付けの設定

順序の制約に kind=Optional オプションを指定すると、制約はオプションと見なされ、両方のリソースが指定の動作を実行する場合にのみ適用されます。1 番目に指定しているリソースの状態を変更しても、2 番目に指定しているリソースには影響しません。

次のコマンドは、VirtualIPdummy_resource という名前のリソースに、勧告的な順序の制約を設定します。

# pcs constraint order VirtualIP then dummy_resource kind=Optional

12.3. リソースセットへの順序の設定

一般的に、管理者は、複数のリソースの連鎖を作成する際に順序を設定します (例: リソース A が開始してからリソース B を開始し、その後にリソース C を開始)。複数のリソースを作成して同じ場所に配置し (コロケーションを指定)、起動の順序を設定する必要がある場合は、「リソースグループの設定」に従って、このようなリソースが含まれるリソースグループを設定できます。

ただし、特定の順序で起動する必要があるリソースをリソースグループとして設定することが適切ではない場合があります。

  • リソースを順番に起動するように設定する必要があるものの、リソースは必ずしも同じ場所に配置しない場合
  • リソース C の前にリソース A または B のいずれかが起動する必要があるものの、A と B の間には関係が設定されていない場合
  • リソース C およびリソース D の前にリソース A およびリソース B の両方が起動している必要があるものの、A と B、または C と D の間には関係が設定されていない場合

このような状況では、pcs constraint order set コマンドを使用して、1 つまたは複数のリソースセットに対して順序の制約を作成できます。

pcs constraint order set コマンドを使用して、リソースセットに以下のオプションを設定できます。

  • sequential - リソースセットに順序を付ける必要があるかどうかを指定します。true または false に設定できます。デフォルト値は true です。

    sequentialfalse に設定すると、セットのメンバーに順序を設定せず、順序の制約にあるセット間で順序付けできます。そのため、このオプションは、制約に複数のセットが登録されている場合に限り有効です。それ以外の場合は、制約を設定しても効果がありません。

  • require-all - 続行する前にセットの全リソースがアクティブである必要があるかどうかを指定します。true または false に設定できます。require-allfalse に設定すると、次のセットに進む前に、セットの 1 つのリソースのみを開始する必要があります。require-allfalse に設定しても、sequentialfalse に設定されている順序なしセットと併用しない限り、効果はありません。デフォルト値は true です。
  • action - 「順序の制約のプロパティー」で説明しているように、startpromotedemote、または stop に設定できます。
  • role - StoppedStartedMaster、または Slave に設定できます。

pcs constraint order set コマンドの setoptions パラメーターに続いて、リソースのセットに対する以下の制約オプションを設定できます。

pcs constraint order set resource1 resource2 [resourceN]... [options] [set resourceX resourceY ... [options]] [setoptions [constraint_options]]

D1D2D3 という 3 つのリソースがある場合は、次のコマンドを実行すると、この 3 つのリソースを、順序を指定したリソースセットとして設定します。

# pcs constraint order set D1 D2 D3

この例では、ABCDE、および F という名前の 6 つのリソースがある場合に、以下のように、起動するリソースセットに順序制約を設定します。

  • AB は、互いに独立して起動します。
  • A または B のいずれかが開始すると、C が開始します。
  • C が開始すると、D が開始します。
  • D が開始したら、EF が互いに独立して起動します。

symmetrical=false が設定されているため、リソースの停止は、この制約の影響を受けません。

# pcs constraint order set A B sequential=false require-all=false set C D set E F sequential=false setoptions symmetrical=false

12.4. Pacemaker で管理されないリソース依存関係の起動順序の設定

クラスターは、クラスターが管理していない依存関係を持つリソースを含めることができます。この場合は、Pacemaker を起動する前にその依存関係を起動し、Pacemaker が停止した後に停止する必要があります。

systemd resource-agents-deps ターゲットを使用してこの条件を構成するために、スタートアップ順序を設定できます。このターゲットに対して systemd ドロップインユニットを作成すると、Pacemaker はこのターゲットに対して相対的な順序を適切に設定できます。

たとえば、クラスターが管理していない外部サービス foo に依存するリソースがクラスターに含まれている場合は、以下の手順を実行します。

  1. 以下を含むドロップインユニット /etc/systemd/system/resource-agents-deps.target.d/foo.conf を作成します。

    [Unit]
    Requires=foo.service
    After=foo.service
  2. systemctl daemon-reload コマンドを実行します。

この方法で指定するクラスターの依存関係はサービス以外のものとなります。たとえば、/srv にファイルシステムをマウントする依存関係がある場合は、以下の手順を実行してください。

  1. /etc/fstab ファイルに /srv が記載されていることを確認します。これは、システムマネージャーの設定が再読み込みされる際に、システムの起動時に systemd ファイルの srv.mount に自動的に変換されます。詳細は、man ページの systemd.mount(5) および systemd-fstab-generator(8) を参照してください。
  2. ディスクのマウント後に Pacemaker が起動するようにするには、以下を含むドロップインユニット /etc/systemd/system/resource-agents-deps.target.d/srv.conf を作成します。

    [Unit]
    Requires=srv.mount
    After=srv.mount
  3. systemctl daemon-reload コマンドを実行します。

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