データ・ドメインの割当て

新しいデータ・ドメインをプロビジョニングする際、Endeca Serverは最初にデータ・ドメインをホストするのに十分な容量があるかどうかを判別し、ある場合は、データ・ドメインでDgraphプロセスをホストするノードを決定します。このトピックでは、これらの計算に影響を与える構成パラメータを要約して示します。これにより、Endeca Serverクラスタを構成または管理する際に、Endeca Serverクラスタのシステム管理者として、これらのパラメータを考慮することができるようになります。

Endeca Serverの容量計算

Endeca Serverは次のパラメータを使用して、(新規または追加の)データ・ドメインをホストするのに十分な容量があるかどうかを計算します。
  • データ・ドメイン・プロファイルで構成される要件は次のとおりです。
    • 過大サブスクライブ。Endeca Serverは、他のデータ・ドメインをホストしている間に、特定のデータ・ドメインでリソースを過大サブスクライブできます。この機能がデータ・ドメイン割当てにどのように影響を与えるかについての詳細は、「過大サブスクライブがハードウェア使用率に影響を与える仕組み」を参照してください。
    • 自動アイドル化。Endeca Serverは、アイドル期間に問合せを受け取らなかった場合、現在アクティブなデータ・ドメインを自動的にアイドル状態にできます。データ・ドメインが自動的にアイドル状態になるように設定されている場合、この処理によりEndeca Serverノードのリソースが解放され、Endeca Serverノードに対する他のデータ・ドメインの割当てに影響を与えます。この機能がデータ・ドメイン割当てにどのように影響を与えるかについての詳細は、「過大サブスクライブがハードウェア使用率に影響を与える仕組み」を参照してください。
  • 新しいデータ・ドメインを作成して割り当てる必要があるときに、Endeca Serverクラスタが使用可能な合計容量。「合計容量」という言葉には2つの側面があります。1つは各ノードで使用可能なスレッドの合計数のことで、もう1つは各ノードで特定のデータ・ドメインに割り当て可能で使用可能なメモリー容量のことです。
    使用可能な合計容量は、次のようにして、メモリーおよびスレッドの数という2つの側面で計算されます。
    • メモリーの計算。Endeca Serverがデータ・ドメインをホストするのに十分なメモリー容量を持っているかどうかを判別する場合のロジックは次のとおりです。Endeca Serverは起動時に、使用可能な合計RAMサイズおよびスワップ・メモリー・サイズに関する情報を収集します。新しいデータ・ドメインを作成するリクエストがあった場合、Endeca Serverはこの情報を使用して、この新しいデータ・ドメインに割り当てるノードを決定します。Endeca Serverは、ノードですでにホストされているすべてのデータ・ドメインの合計メモリー・フットプリントおよび新しい・データ・ドメインで必要なメモリー容量より大きいサイズの仮想メモリーを持つノードのみを選択します。各Endeca Serverノードにおけるメモリー・フットプリントを見積もるには、次の計算式を使用します。
      endeca-memory-to-index-size-ratio x indexes-size + computeCacheSizeMB
      ここで、
      • endeca-memory-to-index-size-ratioは、データ・ドメインに割り当てられているすべての仮想メモリーの索引サイズに対する比率です。クラスタ管理者は、Endeca Serverクラスタのマシンごとに、EndecaServer.propertiesファイルでこの設定を指定します。デフォルトの比率は2.0で、この値は他の値が指定されていない場合に使用されます。たとえば、索引サイズが40MBで、比率が2.0の場合、Endeca Serverはデータ・ドメインに対して80MBの仮想メモリーの割当てを試みます。
      • indexes-sizeは、Endeca Serverで現在ホストされているすべてのデータ・ドメインに対して計算された、すべての索引の合計サイズです。この設定はEndeca Serverの内部で計算され、管理者には報告されません。
      • computeCacheSizeMBは、データ・ドメインの各Dgraphプロセスで結果キャッシュに割り当てるRAMの容量です(MB単位)。Endeca Serverクラスタ管理者は、データ・ドメイン・プロファイルの作成時に、endeca-cmd put-dd-profileまたはクラスタWebサービスのPutDataDomainProfileを使用してこの設定を指定します。指定しなかった場合は、デフォルトが使用されます。デフォルトの0は、次のように解釈されます。絶対値が0の場合、DgraphノードをホストするEndeca Serverノードで利用可能なRAMの容量の10%としてデフォルトのDgraphキャッシュ・サイズが算出されます。
    • スレッド数の計算。Endeca Serverが新しい(または追加の)データ・ドメインをホストするのに十分な処理スレッド数を持っているかどうかを判別する場合のロジックは次のとおりです。Endeca Serverは起動時に、ホストしているデータ・ドメインで使用されているスレッドの合計数に関する情報を収集します。新しいデータ・ドメインを作成するリクエストがあった場合、Endeca Serverは、使用可能なスレッドの合計数が新しいデータ・ドメインおよびすでにホストしているデータ・ドメインの両方を処理するのに十分な数である場合にのみ、新しいデータ・ドメインを作成します。各Endeca Serverノードにおけるスレッドの合計数を見積もるには、次の計算式を使用します。
      numCpuCores x endeca-threads-allowed-per-core
      ここで、
      • numCpuCoresは、Endeca Serverノード・プロファイルで指定した設定です。(ノード・プロファイルが定義されると、Endeca Serverクラスタのすべてのノードで使用されます。)これは、各Endeca Serverインスタンスに割り当てられたCPUコアの数です。Endeca ServerアプリケーションがWebLogic Serverにデプロイされていると、CPUコアの数が起動時に自動的に決まります。デフォルトは2より大きいか、ノードで利用可能なCPUコアの数です。たとえば、マシンで使用可能なすべてのCPUコアの数が12である場合、ノード・プロファイルでは、numCpuCoresとしてデフォルトでこの値が使用されます。
      • endeca-threads-allowed-per-coreは、EndecaServer.propertiesファイルで指定した設定です。これは、コア当たりに許可されるスレッドの数です。デフォルトは1.0で、この値は他の値が指定されていない場合に使用されます。

      この計算式で得られた数が、すべてのDgraphノードおよびすべてのEndeca Serverノードにおいて「使用されるスレッドの合計数」より大きい場合、Endeca Serverは、新しいデータ・ドメインに対してスレッド数の割当てを試みます。

      注意: 「使用されるスレッドの合計数」を計算するために、Endeca Serverはデータ・ドメイン・プロファイルのnumComputeThreadsを使用します。これは、データ・ドメイン・プロファイルで指定した設定です。このプロファイルを使用して、データ・ドメインを処理するDgraphノードごとにリクエストを処理するために割り当てるスレッドの数を指定します。スレッドの数は4以上にする必要があります。デフォルトは4です。

      次に、この計算式を解釈する別の方法を示します。新しいデータ・ドメインを作成するユーザーが、Endeca Serverノードが既存のデータ・ドメインと新しいデータ・ドメインの両方をホストできるように、そのノードで必要なスレッドの合計数より大きい数を要求した場合、そのEndeca Serverノードではデータ・ドメインに対する割当てが行われず、Endeca Serverは引き続き、クラスタ内でこのデータ・ドメインを割り当てるための他のノードを探します。新しいデータ・ドメインでDgraphプロセスをホストするのに十分なスレッド数を持つノードが見つからない場合、データ・ドメインは作成されません。

    注意: データ・ドメイン割当ての方針として、スレッド数およびメモリー・フットプリントの計算時に無効またはアイドル状態のデータ・ドメインは無視されます。データ・ドメインを有効にして、アイドル状態のデータ・ドメインをウェイクアップする操作が成功するのは、その操作がリソースの制約をすべて満たしている場合のみです。
  • さらに、Endeca ServerをLinux 6にデプロイして、Endeca Serverでcgroupの構成と使用を有効にした場合は、cgroupを使用して、データ・ドメインのDgraphプロセスでEndeca Serverがマシンのリソースのすべては消費しないこと、およびそのマシンでシステム管理者がEndeca Serverに常にアクセス可能であることが保証されます。cgroupを有効にした場合、Endeca Serverはデータ・ドメインを割り当てるために、マシンの合計仮想メモリーを使用するのではなく、合計仮想メモリーのcgroupによる制限値を使用します。cgroupを使用して有効にする方法の詳細は、『Oracle Endeca Server管理者ガイド』を参照してください。

Endeca Serverノードの割当て

Endeca Serverがデータ・ドメインをホストするのに十分な容量があることを判別すると、データ・ドメインで特定のDgraphプロセスをホストするEndeca Serverノードを決定します。

注意: Endeca Serverクラスタ管理者に対してこの情報が有効で参照可能な場合、データ・ドメイン・ノードのEndeca Serverノードへの割当ては、データ・ドメイン管理者には公開されません。データ・ドメイン管理者の側からすると、Endeca Serverは使用可能なノードでデータ・ドメインをホストしており(リソース使用を可能なかぎり効率的に分散させようとしている)、エンドユーザーの問合せをEndeca Serverに指定して処理を行うために、ホストしている各データ・ドメインでリクエストのロード・バランシングおよびルーティングが自動的に発生しています。
Endeca Serverは、次の原則に従って、ノード割当てを行います。
  • 指定されたデータ・ドメイン・クラスタのDgraphノードは、異なるEndeca Serverノードで自動的にホストされます。つまり、同じEndeca Serverノード上の同じデータ・ドメインで複数のDgraphノードをホストすることは、Endeca Serverソフトウェアではサポートしていません。

    たとえば、3つのノードのEndeca Serverクラスタでは、5つのDgraphノードのあるデータ・ドメインを作成できません。このデータ・ドメインを作成する場合、Endeca Serverノードの数も5つに増加する必要があります。Endeca Serverの管理Webサービスでは、クラスタにおけるEndeca Serverノードの数を超えてデータ・ドメインを作成したり再スケールしようとするリクエストは、フォルトが返されます。

  • 複数のデータ・ドメイン・クラスタがEndeca Serverでホストされていると、可能な場合は必ず、異なるEndeca Serverノード上でデータ・ドメイン・クラスタごとにリーダー・ノードがホストされます。