第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
リソースまたはリソースグループのクローンを削除する場合は次のコマンドを使用します。リソースやリソースグループ自体は削除されません。
pcs resource unclone resource_id | group_name
リソースオプションについては 「リソースの作成」 を参照してください。
クローンのリソースに指定できるオプションを 表9.1「クローンのリソース用オプション」 に示します。

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

フィールド説明
priority, target-role, is-managed
表6.3「リソースのメタオプション」 の説明どおり、クローンされたリソースから継承されるオプション。
clone-max
How many copies of the resource to start. Defaults to the number of nodes in the cluster.
clone-node-max
How many copies of the resource can be started on a single node; the default value is 1.
notify
When stopping or starting a copy of the clone, tell all the other copies beforehand and when the action was successful. Allowed values: false, true. The default value is false.
globally-unique
各クローンのコピーに異なる機能を行わせるかどうか、使用できる値: falsetrue
このオプションの値が false の場合はリソースが実行しているいずれのノードであってもすべて同じ動作を行うため、1 台のマシンごと実行できるクローンのコピーは 1 つ
このオプションの値が true の場合は任意のマシンで実行中のクローンのコピーは別のマシンまたは同じマシンで実行している他のコピーとは同じにならない、clone-node-max の値が「1」より大きい場合にはデフォルト値は true になり、これ以外の場合は false がデフォルト値になる
ordered
Should the copies be started in series (instead of in parallel). Allowed values: false, true. The default value is false.
interleave
Changes the behavior of ordering constraints (between clones/masters) so that copies of the first clone can start or stop as soon as the copy on the same node of the second clone has started or stopped (rather than waiting until every instance of the second clone has started or stopped). Allowed values: false, true. The default value is false.

9.1.2. 制約のクローン作成

ほとんどの場合、アクティブなクラスターノードに対してクローンのコピーはひとつです。ただし、clone-max にはクラスター内のノード合計数より小さい数をリソースのクローン数の値として設定することができます。この場合、リソースの場所制約を付けたコピーを優先的に割り当てるノードを示すことができます。クローンの ID を使用する点以外、制約は通常のリソースの場合と全く変わらずクローンに記述されます。
次のコマンドでは場所の制約を作成し、リソースのクローン webfarm-clonenode1 に優先的に割り当てられるようにしています。
# pcs constraint location webfarm-clone prefers node1
順序制約の動作はクローンでは若干異なります。以下の例では、開始される必要がある 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 によるクラスターノード内での不必要なコピーの移動を適切に阻止することができます。