前のトピック: グリッド レコード

次のトピック: 外部ストレージの指定


サーバ選択条件の指定

利用可能なサーバに資格を与え、ランク付けするには、グリッド サーバの選択条件を使用します。 タグを使用して選択条件節を作成した後、グリッド サーバの集合を制御できます。 タグには、タグとスマート タグの 2 つのタイプがあります。 タグを使用して、基本的なサーバ割り当てを指定します。 サーバ グループのより詳細な特徴を識別するには、スマート タグを使用します。 指定できる特徴には、CPU コア、CPU 速度、検出日付、メモリ、電源タイプ、およびディスク総容量などがあります。

タグが存在する場合、それらはグリッドに対して選択した CA AppLogic のバージョンに必要なサーバの最小要件に追加して適用されます。

グリッドに対するサーバ選択条件として使用する一連のテストを定義するには、タグを CNF (Conjunctive Normal Form: 乗法標準形)節で組み合わせます。 選択条件を指定する構文では、CNF で指定したテストを、結合を表すリスト内の分離したリテラル(優先順での論理和)の(JSON)配列に変換する必要があります。 CNF 節内のリテラルは、要件(タグ名)または許可されない条件(否定されたタグ名)に対する制約を表します。

以下の例では、タグ選択条件を表す仮定のセットを使用します。 その後、CNF ステートメントを使用して、選択条件の値を指定します。

例 1

この例では、以下の 3 つのセットのメンバに対してサーバ タグを定義します。

次に、グリッドに対してサーバ条件を指定して、Platinum サーバが色に関係なく Gold または Silver サーバの前に選択されるようにしたいと仮定します。 この例では、グリッドは Bronze または Triangle のサーバを受け入れません。

これは CNF では次のように記述されます。

((Platinum or Gold or Silver) and (not Triangle)) 

これは以下のような選択条件値になります。

[["Platinum","Gold","Silver"],["~Triangle"]] 

「and」および「or」という用語が構文からなくなっていることに注意してください。 分離したものの結合は、CNF を使用して仮定され、それらは構文によって示されます。

これは、以下のように解釈されます。各行はグリッドの不足を満たすのに十分なサーバが見つかるまで試行されます。

  1. Triangle ではない Platinum を選択します。
  2. Triangle ではない Gold を選択します。
  3. Triangle ではない Silver を選択します。

例 2:

この例では、Red サーバが Blue または Green のサーバよりもよいと判断します。 また、Yellow タグが追加されましたが、その Yellow サーバはグリッドに対して機能しないことを指定するとします。

選択値は次のようになります。

[["Platinum","Gold","Silver"],["Red","~Yellow"],["~Triangle"]] 

これは以下のように解釈されます。

  1. Triangle ではない Platinum Red を選択します。
  2. Yellow ではなく、Triangle ではない Platinum を選択します。
  3. Triangle ではない Gold Red を選択します。
  4. Yellow ではなく、Triangle ではない Gold を選択します。
  5. Triangle ではない Silver Red を選択します。
  6. Yellow ではなく、Triangle ではない Silver を選択します。

例 3:

例 2 で説明したグリッド選択内容を変更して、Yellow サーバを除外し、さらに Green サーバより Blue サーバを優先する条件を追加します。 選択値は以下のようにに変更できます。

[["Platinum","Gold","Silver"],["Red","Blue","Green"],["~Triangle"]] 

十分な数のサーバが見つかるまで、BFC によって以下の順でサーバが検索されます。

  1. Triangle ではない Platinum Red を選択します。
  2. Triangle ではない Platinum Blue を選択します。
  3. Triangle ではない Platinum Green を選択します。
  4. Triangle ではない Gold Red を選択します。
  5. Triangle ではない Gold Blue を選択します。
  6. Triangle ではない Gold Green を選択します。
  7. Triangle ではない Silver Red を選択します。
  8. Triangle ではない Silver Blue を選択します。
  9. Triangle ではない Silver Green を選択します。

例 4

この例では、形の条件として Triangle を除外する代わりに Circle を含めています。

[["Platinum","Gold","Silver"],["Red","Blue","Green"],["Circle"]] 

これは選択内容に以下のように影響します。

  1. Platinum Red Circle を選択します。
  2. Platinum Blue Circle を選択します。
  3. Platinum Green Circle を選択します。
  4. Gold Red Circle を選択します。
  5. Gold Blue Circle を選択します。
  6. Gold Green Circle を選択します。
  7. Silver Red Circle を選択します。
  8. Silver Blue Circle を選択します。
  9. Silver Green Circle を選択します。

例 5

サーバの条件で否定を使用する場合は、タグ カテゴリのメンバが変更されたときの動作を考慮します。 たとえば、形として Square が追加された場合には、上記のクエリによってどのようなサーバが選択されるかについて考えます。 また、未知のものがどのように処理されるかを考えます。 Circle サーバおよび Triangle サーバのみがある場合とは、Triangle でないサーバをリクエストするときに多少の違いが生じます。 Square サーバがある場合、Circle を明示的に呼び出す調整を行わない限り、これは Circle と同様に Grid1 に追加されます。

以下の例では、グリッドは、Gold ではなく、Circle でもないサーバのみを要求します。

これは CNF では次のように記述されます。

((not Gold) and (not Circle)) 

これは以下の選択文字列に変換されます。

[["~Gold"],["~Circle"]] 

Gold サーバを誤って除外した場合は、条件は次のようになります。

[["~Circle"]]