第6章 リソースの制約

リソースの制約を設定することでクラスター内のそのリソースの動作を決めることができます。設定できる制約は以下のカテゴリーになります。
  • location 制約 — 場所の制約はリソースを実行できるノードを決めます。場所の制約については「場所の制約」 で説明しています。
  • order 制約 — 順序の制約はリソースが実行される順序を決めます。順序の制約については 「順序の制約」 で説明しています。
  • colocation 制約 — コロケーションの制約は他のリソースと相対的となるリソースの配置先を決めます。コロケーションの制約については 「リソースのコロケーション」 で説明しています。
複数リソース一式を一緒に配置、それらを順番に起動させ、また逆順で停止させるため複数の制約を設定する場合、その簡易な方法として Pacemaker ではリソースグループという概念に対応しています。リソースグループについては 「リソースグループ」 を参照してください。

6.1. 場所の制約

場所の制約ではリソースを実行させるノードを指定します。場所の制約を設定することで特定のノードで優先してリソースを実行する、または特定のノードでのリソースの実行を避けるなどの指定を行うことができます。
表6.1「場所の制約オプション」 では場所の制約を設定する場合のオプションについて簡単に示します。

表6.1 場所の制約オプション

フィールド説明
id
制約に付けられる固有の名前、pcs で場所の制約を設定するとシステムによって付けられる
rsc
リソース名
node
ノード名
score
優先度を示す値、任意のノードでのリソースの実行を優先または避ける
INFINITY の値は "すべき" から "しなければならない" に変化、INFINITY がリソースの場所制約のデフォルト score 値
次のコマンドはリソースが指定ノードで優先して実行される場所の制約を作成します。
pcs constraint location rsc prefers node[=score] ...
次のコマンドはリソースが指定ノードを避けて実行される場所の制約を作成します。
pcs constraint location rsc avoids node[=score] ...
リソースの実行を許可するノード指定には上記以外にも 2 種類の方法があります。
  • オプトインクラスター — クラスターを設定し、デフォルトではいずれのノードでもリソース実行を許可せず、特定のリソース用に選択的に許可ノードを有効にします。オプトインクラスターの設定方法は 「「オプトイン」のクラスターを設定する」 で説明しています。
  • オプトアウトクラスター — クラスターを設定し、デフォルトでは全ノードでリソース実行を許可してから、特定ノードでの実行を許可しない場所の制約を作成します。オプトアウトクラスターの設定方法は 「「オプトアウト」のクラスターを設定する」 で説明しています。
オプトインまたはオプトアウトのクラスターを設定するかどうかはユーザーの嗜好やクラスターの構成により異なるところです。ほとんどのリソースをほとんどのノードで実行させて構わない場合はオプトアウトのクラスター設定を行うとシンプルな設定になるでしょう。一方、ほとんどのリソースの実行を限定的な複数ノードに限るような場合にはオプトインのクラスター設定を行うとシンプルな設定になります。

6.1.1. 「オプトイン」のクラスターを設定する

オプトインクラスターを作成する場合はクラスタープロパティ symmetric-clusterfalse に設定してデフォルトではリソースの実行をいずれのノードでも許可しないようにします。
# pcs property set symmetric-cluster=false
リソースごとにノードを有効にします。次のコマンドは場所の制約を設定するため、Webserver リソースは example-1 ノードでの実行を優先させ、Database リソースは example-2 ノードでの実行を優先させるようになります。また、いずれのリソースも優先ノードに障害が発生した場合は example-3 ノードにフェールオーバーすることができます。
# pcs constraint location Webserver prefers example-1=200
# pcs constraint location Webserver prefers example-3=0
# pcs constraint location Database prefers example-2=200
# pcs constraint location Database prefers example-3=0

6.1.2. 「オプトアウト」のクラスターを設定する

オプトアウトクラスターを作成する場合はクラスタープロパティ symmetric-clustertrue に設定しデフォルトではリソースの実行をすべてのノードに許可します。
# pcs property set symmetric-cluster=true
次のコマンドを実行すると 「「オプトイン」のクラスターを設定する」 の例と同じ設定になります。全ノードの score は暗黙で 0 になるため、優先ノードに障害が発生した場合はいずれのリソースも example-3 ノードにフェールオーバーすることができます。
# pcs constraint location Webserver prefers example-1=200
# pcs constraint location Webserver avoids example-2=INFINITY
# pcs constraint location Database avoids example-1=INFINITY
# pcs constraint location Database prefers example-2=200
上記コマンドでは score に INFINITY を指定する必要はありません。INFINITY が score のデフォルト値になります。