5.5 リソース制約の設定

すべてのリソースを構成することは、ジョブのほんの一部分です。クラスタが必要なすべてのリソースを認識しても、正しく処理できるとは限りません。たとえば、ファイルシステムをdrbdのスレーブノードにマウントしようとしても意味がありません(実際、drbdでは失敗します)。クラスタにこのようなことを通知するには、制約を定義します。

High Availabilityでは、使用できる制約には3種類あります。

5.5.1 場所の制約

この種類の制約は、各リソースに複数追加できます。すべてのrsc_location制約は、所定のリソースに対して評価されます。ID fs1-locのリソースを名前earthのノードで実行する確率を100に増加する簡単な例を、次に示します。

crm(live)configure# location fs1-loc fs1 100: earth

5.5.2 コロケーションの制約

colocationコマンドは、同じホストまたは別のホストで実行するリソースを定義するために使用します。通常、次の順序を使用します。

crm(live)configure# order rsc1 rsc2
crm(live)configure# colocation rsc2 rsc1

+INFINITYまたは-INFINITYのスコアのみが設定でき、同じノードで常に実行されるか、または常に実行されないリソースを定義します。たとえば、IDがfilesystem_resourcenfs_groupの2つのリソースを常に同じホストで実行するには、次の制約を使用します。

crm(live)configure# colocation nfs_on_filesystem inf: nfs_group filesystem_resource

マスタスレーブ構成では、現在のノートがマスタかどうかと、リソースをローカルに実行しているかどうかを把握することが必要です。これは追加のto_roleまたはfrom_role属性からチェックできます。

5.5.3 順序の制約

サービスを開始させる順序の指定が必要となる場合があります。たとえば、デバイスがシステムで利用できるようになるまで、ファイルシステムはマウントできません。順序の制約を使用して、開始、停止、マスタへの昇格など、別のリソースが特殊な条件を満たす直前または直後に、サービスを開始または停止できます。次のコマンドをcrmシェルで使用して、順序の制約を設定します。

crm(live)configure# order nfs_after_filesystem mandatory: group_nfs filesystem_resource

5.5.4 サンプル構成の制約

この章で使用される例は、制約を追加しないと予期したように動作しません。すべてのリソースが同じマシン上でdrbdリソースのマスタとして実行することが不可欠です。もう1つの重要なことは、その他のリソースが開始する前にdrbdリソースがマスタになることが必要であることです。drbdがマスタでないときにdrbdデバイスをマウントしようとしても、失敗します。満たす必要がある制約は、次のようになります。

  • ファイルシステムは常に同じノード上にdrbdリソースのマスタとして存在する必要があります。

    crm(live)configure# colocation filesystem_on_master inf: \
        filesystem_resource drbd_resource:Master
  • NFSサーバとIPアドレスは、ファイルシステムとして同じノード上に存在する必要があります。

    crm(live)configure# colocation nfs_with_fs inf: \
       nfs_group filesystem_resource
  • NFSサーバとIPアドレスは、ファイルシステムがマウントされた後に開始されます。

    crm(live)configure# order nfs_second mandatory: \
       filesystem_resource nfs_group
  • ファイルシステムは、drbdリソースがこのノードのマスタに昇格した後にマウントされる必要があります。

    crm(live)configure# order drbd_first inf: \
        drbd_resource:promote filesystem_resource