第15章 ルールによるリソースの場所の決定

さらに複雑な場所の制約には、Pacemaker のルールを使用してリソースの場所を決定できます。

15.1. Pacemaker ルール

ルールは、設定をより動的にするのに使用できます。ルールには、(ノード属性を使用して) 時間ベースで異なる処理グループにマシンを割り当て、場所の制約の作成時にその属性を使用する方法があります。

各ルールには、日付などの様々な式だけでなく、その他のルールも含めることができます。ルールの boolean-op フィールドに応じて各種の式の結果が組み合わされ、最終的にそのルールが true または false のどちらに評価されるかどうかが決まります。次の動作は、ルールが使用される状況に応じて異なります。

表15.1 ルールのプロパティー

フィールド説明

role

リソースが指定のロールにある場合にのみ適用するルールを制限します。使用できる値は StartedSlave、および Master です。注意: role="Master" が指定されたルールは、クローンインスタンスの最初の場所を判断できません。どのアクティブインスタンスが昇格されるかにのみ影響します。

score

ルールが true に評価される場合に適用されるスコア。場所の制約として、ルールでの使用に制限されます。

score-attribute

ルールが true に評価されると検索し、スコアとして使用するノード属性。場所の制約として、ルールでの使用に制限されます。

boolean-op

複数の式オブジェクトからの結果を組み合わせる方法。使用できる値は and および or です。デフォルト値は and です。

15.1.1. ノード属性の式

ノードで定義される属性に応じてリソースを制御する場合に使用されるノード属性の式です。

表15.2 式のプロパティー

フィールド説明

attribute

テストするノード属性。

type

値をテストする方法を指定します。使用できる値は、stringintegerversion です。デフォルト値は string です。

operation

実行する比較動作。使用できる値は以下のようになります。

* lt - ノード属性の値が value 未満の場合は True

* gt - ノード属性の値が value を超える場合は True

* lte - ノード属性の値が value 未満または同等になる場合は True

* gte - ノード属性の値が value を超えるか、または同等になる場合は True

* eq - ノード属性の値が value と同等になる場合に True

* ne - ノード属性の値が value と同等にならない場合は True

* defined - ノードに指定属性がある場合は True

* not_defined - ノードに指定属性がない場合は True

value

比較のためにユーザーが提供した値 (operationdefined または not_defined に設定されていない場合に限り必要)

管理者が追加する属性のほかに、表15.3「組み込みノード属性」で説明されているように、クラスターは、使用可能な各ノードに特殊な組み込みノード属性を定義します。

表15.3 組み込みノード属性

名前説明

#uname

ノード名

#id

ノード ID

#kind

ノードタイプ。使用できる値は、clusterremote、および container です。kind の値は、ocf:pacemaker:remote リソースで作成された Pacemaker リモートノードの remote、および Pacemaker リモートゲストノードおよびバンドルノードの container です。

#is_dc

このノードが指定コントローラー (DC) の場合は true、それ以外の場合は false

#cluster_name

cluster-name クラスタープロパティーの値 (設定されている場合)。

#site_name

site-name ノード属性の値 (設定されている場合)。それ以外は #cluster-name と同じ。

#role

関連する昇格可能なクローンがこのノードで果たす役割。昇格可能なクローンに対する場所の制約のルール内でのみ有効です。

15.1.2. 時刻と日付ベースの式

日付の式は、現在の日付と時刻に応じてリソースまたはクラスターオプションを制御する場合に使用します。オプションで日付の詳細を含めることができます。

表15.4 日付の式のプロパティー

フィールド説明

start

ISO 8601 仕様に準じた日付と時刻。

end

ISO 8601 仕様に準じた日付と時刻。

operation

状況に応じて、現在の日付と時刻を start と end のいずれかの日付、または両方の日付と比較します。使用できる値は以下のようになります。

* gt - 現在の日付と時刻が start 以降の場合は True

* lt - 現在の日付と時刻が end 以前の場合は True

* in_range - 現在の日付と時刻が start 以降、かつ end 以前の場合は True

* date-spec - 現在の日付/時刻に対して cron のような比較を実行します。

15.1.3. 日付の詳細

日付の詳細は、時間に関係する cron のような式を作成するのに使用されます。各フィールドには 1 つの数字または範囲が含まれます。指定のないフィールドは、デフォルトを 0 に設定するのではなく、無視されます。

たとえば、monthdays="1" は各月の最初の日と一致し、hours="09-17" は午前 9 時から午後 5 時まで (両時間を含む) の時間と一致します。ただし、weekdays="1,2" または weekdays="1-2,5-6" には複数の範囲が含まれるため、指定することはできません。

表15.5 日付詳細のプロパティー

フィールド説明

id

日付の一意の名前

hours

使用できる値 - 0~23

monthdays

使用できる値 - 0~31(月と年に応じて異なる)

weekdays

使用できる値 - 1~7 (1=月曜日、7=日曜日)

yeardays

使用できる値 - 1~366 (年に応じて異なる)

months

使用できる値 - 1~12

weeks

使用できる値 - 1~53 (weekyear に応じて異なる)

years

グレゴリオ暦 (新暦) に準じる年

weekyears

グレゴリオ暦の年とは異なる場合がある (例: 2005-001 Ordinal2005-01-01 Gregorian であり 2004-W53-6 Weekly でもある)

moon

使用できる値 - 0~7 (0 は新月、4 は満月)

15.2. ルールを使用した Pacemaker の場所の制約の設定

以下のコマンドを使用して、ルールを使用する Pacemaker 制約を使用します。score を省略すると、デフォルトの INFINITY に設定されます。resource-discovery を省略すると、デフォルトの always に設定されます。

resource-discovery オプションの詳細は、「ノードのサブセットへリソース検出の制限」を参照してください。

基本的な場所の制約と同様に、制約にリソースの正規表現を使用することもできます。

ルールを使用して場所の制約を設定する場合は、score を正または負の値にすることができます。正の値は「prefers」を示し、負の値は「avoids」を示します。

pcs constraint location rsc rule [resource-discovery=option] [role=master|slave] [score=score | score-attribute=attribute] expression

expression オプションは、duration_options および date_spec_options のいずれかに設定できます。使用できる値は、「日付詳細のプロパティー」で説明されているように、hours、monthdays、weekdays、yeardays、months、weeks、years、weekyears、moon になります。

  • defined|not_defined attribute
  • attribute lt|gt|lte|gte|eq|ne [string|integer|version] value
  • date gt|lt date
  • date in_range date to date
  • date in_range date to duration duration_options …​
  • date-spec date_spec_options
  • expression and|or expression
  • (expression)

持続時間は、計算により in_range 操作の終了を指定する代替方法です。たとえば、19 カ月間を期間として指定できます。

以下の場所の制約は、現在が 2018 年の任意の時点である場合に true の式を設定します。

# pcs constraint location Webserver rule score=INFINITY date-spec years=2018

以下のコマンドは、月曜日から金曜日までの 9 am から 5 pm までが true となる式を設定します。hours の値 16 には、時間 (hour) の値が一致する 16:59:59 までが含まれます。

# pcs constraint location Webserver rule score=INFINITY date-spec hours="9-16" weekdays="1-5"

以下のコマンドは、13 日の金曜日が満月になると true になる式を設定します。

# pcs constraint location Webserver rule date-spec weekdays=5 monthdays=13 moon=4

ルールを削除するには、以下のコマンドを使用します。削除しているルールがその制約内で最後のルールになる場合は、その制約も削除されます。

pcs constraint rule remove rule_id

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