第9章 高度な設定

本章では Pacemaker で対応している高度なリソースタイプと高度な設定機能を説明します。

9.1. リソースのクローン

リソースが複数のノードでアクティブになるよう、リソースをクローンすることができます。たとえば、クローンしたリソースを使用して IP リソースの複数のインスタンスを設定し、クラスター全体で分散することができます。リソースエージェントがサポートするリソースはすべてクローンできます。クローンは 1 つのリソースまたは 1 つのリソースグループで構成されます。

注記

クローンに適しているのは同時に複数のノードで実行することができるリソースのみです。たとえば、共有ストレージデバイスから ext4 などのクラスター化していないファイルシステムをマウントする Filesystem リソースなどのクローンは作成しないでください。ext4 パーティションはクラスターを認識しないため、同時に複数のノードから繰り返し行われる読み取りや書き込み操作には適していません。

9.1.1. クローンリソースの作成と削除

リソースの作成とそのリソースのクローン作成を同時に行う場合は次のコマンドを使用します。
pcs resource create resource_id standard:provider:type|type [resource options]  \
clone  [meta clone_options]
クローンの名前は resource_id-clone になります。
リソースグループの作成とそのリソースグループのクローン作成は一つのコマンドではできません。
作成済みリソースまたはリソースグループのクローンは次のコマンドで作成できます。
pcs resource clone resource_id | group_name [clone_options]...
クローンの名前は resource_id-clone または group_name-clone になります。

注記

リソース設定の変更が必要なのは一つのノードのみです。

注記

制約を設定する場合はグループ名またはクローン名を必ず使用します。
リソースのクローンを作成すると、その名前はリソース名に -clone を付けた名前が付けられます。次のコマンドではタイプが apachewebfarm というリソースとそのクローンとして webfarm-clone というリソースを作成します。
# pcs resource create webfarm apache clone

注記

あるクローンを、別のクローンの後にくるように作成する場合は、多くの場合 interleave=true オプションを設定する必要があります。これにより、依存元のクローンが停止または開始した時に、依存しているクローンのコピーを停止または開始できます。このオプションを設定しない場合は、次のようになります。クローンリソース B がクローンリソース A に依存している場合に、ノードがクラスターを去ってから戻ってきて、そのノードでリソース A が起動すると、リソース B の全コピーが、その全ノードで再起動します。なぜなら、依存しているクローンリソースに interleave オプションが設定されていないため、そのリソースの全インスタンスは、そのリソースが依存するリソースの実行インスタンスに依存するためです。
リソースまたはリソースグループのクローンを削除する場合は次のコマンドを使用します。リソースやリソースグループ自体は削除されません。
pcs resource unclone resource_id | group_name
リソースオプションについては 「リソースの作成」 を参照してください。
クローンのリソースに指定できるオプションを 表9.1「クローンのリソース用オプション」 に示します。

表9.1 クローンのリソース用オプション

フィールド説明
priority, target-role, is-managed
表6.3「リソースのメタオプション」 の説明どおり、クローンされたリソースから継承されるオプション。
clone-max
開始するリソースのコピー数、クラスター内のノード数がデフォルト設定
clone-node-max
単一ノードで起動可能なリソースのコピー数、デフォルト値は 1
notify
クローンのコピーの起動または停止を行う場合、動作の前と動作が正しく行われたときに他の全コピーに通知する、使用できる値: falsetrue (デフォルト値は false)
globally-unique
各クローンのコピーに異なる機能を行わせるかどうか、使用できる値: falsetrue
このオプションの値が false の場合はリソースが実行しているいずれのノードであってもすべて同じ動作を行うため、1 台のマシンごと実行できるクローンのコピーは 1 つ
このオプションの値が true の場合は任意のマシンで実行中のクローンのコピーは別のマシンまたは同じマシンで実行している他のコピーとは同じにならない、clone-node-max の値が「1」より大きい場合にはデフォルト値は true になり、これ以外の場合は false がデフォルト値になる
ordered
複数のコピーは順番に起動される (同時には起動しない)、使用できる値: falsetrue (デフォルト値は false)
interleave
2 番目のクローンのすべてのインスタンスが開始または停止するまで待機せずに、2 番目のクローンの同じノードでコピーを開始または停止した直後に最初クローンのコピーが開始または停止できるよう、(クローンとマスターとの間で) 順序制約の動作を変更します。許可される値は false および true です。デフォルト値は false です。
clone-min
値を指定した場合、interleave オプションが true に設定されていても、この後に順序付けされたクローンは、元のクローンに指定した数だけインスタンスが実行するまで起動できません。

9.1.2. 制約のクローン作成

ほとんどの場合、アクティブなクラスターノードに対してクローンのコピーはひとつです。ただし、clone-max にはクラスター内のノード合計数より小さい数をリソースのクローン数の値として設定することができます。この場合、リソースの場所制約を付けたコピーを優先的に割り当てるノードを示すことができます。クローンの ID を使用する点以外、制約は通常のリソースの場合と全く変わらずクローンに記述されます。
次のコマンドでは場所の制約を作成し、リソースのクローン webfarm-clonenode1 に優先的に割り当てられるようにしています。
# pcs constraint location webfarm-clone prefers node1
順序制約の動作はクローンでは若干異なります。以下の例では、interleave クローンオプションがデフォルトの false のままになっているため、開始する必要がある webfarm-clone のインスタンスがすべて開始するまでは、webfarm-stats のインスタンスが開始しません。webfarm-clone のコピーを 1 つも開始できないと、webfarm-stats はアクティブになりません。さらに、webfarm-stats が停止するまで待機してから webfarm-clone が停止します。
# pcs constraint order start webfarm-clone then webfarm-stats
通常のリソース (またはリソースグループ) をクローンとコロケートすると、そのリソースはクローンの複数コピーが実行されている複数マシンいずれでも実行できるということになります。どのコピーが実行しているマシンでそのリソースを実行させるかはクローンが実行している場所とそのリソース自体の場所の優先度に応じて選択されます。
クローン同士でのコロケーションも可能です。この場合、クローンに対して許可できる場所はそのクローンが実行中のノード (または実行するノード) に限定されます。割り当ては通常通り行われます。
以下のコマンドは、コロケーション制約を作成し、webfarm-stats リソースが webfarm-clone のアクティブなコピーと同じノードで実行されるようにします。
# pcs constraint colocation add webfarm-stats with webfarm-clone

9.1.3. 粘着性のクローン作成

安定性のある割り当てパターンにするためクローンはデフォルトで若干の粘着性を備えています。resource-stickiness に値を与えないとクローンは 1 の値を使用します。値を小さくすることで他のリソースのスコア計算への阻害を最小限に抑えながら、Pacemaker によるクラスターノード内での不必要なコピーの移動を適切に阻止することができます。