データ・ドメインのセッション・アフィニティの構成

クライアント・リクエストを受信すると、Endeca Serverは適切なデータ・ドメインをホストする任意のEndeca Serverノードにルーティングします。オプションで、リクエスト・ルーティングにセッション・アフィニティを使用するようにデータ・ドメイン・プロファイルを構成できます。

Endeca Serverでセッション・アフィニティを構成すると、同じセッションIDを持つ問合せがデータ・ドメイン内の同じDgraphノードにルーティングされるようになります。これにより、Dgraphプロセス・キャッシュが効率的に利用されて問合せ処理のパフォーマンスが向上し、エンティティ(Studioではビューと呼ばれる)のキャッシングのパフォーマンスも向上します。

endeca-cmdを使用してデータ・ドメイン・プロファイルを構成する場合、次のものを指定できます。

endeca-cmdパラメータ 説明
endeca-cmd put-dd-profile --session-id-type method セッション・アフィニティの確立に使用されるmethod

使用可能なオプションは、HEADER (HTTPヘッダー)、PARAMETER (URLパラメータ)またはCOOKIEです。

デフォルトのメソッドはHEADERです。値は大/小文字を区別しません。

endeca-cmd put-dd-profile --session-id-key name 指定したメソッドで確認されるオブジェクトの名前。デフォルト名は、X-Endeca-Session-IDです。

このプロファイルを使用して新しいデータ・ドメインを作成する場合、Endeca Serverはユーザーが指定した値を使用します。

3つのメソッド(HTTPヘッダー、URLパラメータまたはcookie)のすべてについて、Endeca Serverはユーザーが指定した方法および名前に基づいてセッションIDを検索します。Endeca Serverがリクエストで特定のセッションIDを見つけられない場合、IDを任意に選択し、ラウンドロビン分散を使用して適切なEndeca Serverノードにリクエストをルーティングしようとします。

Endeca Serverは、ホストされているデータ・ドメインにリクエストを発行するフロントエンド・クライアント・アプリケーションによってリクエストのHTTPヘッダー、URLパラメータおよびcookieが明示的に設定されることを想定しています。

注意: Endeca Serverは、cookieが設定されていないcookieメソッドを使用して、任意の問合せタイプのリクエストのcookieをデータ・ドメインに返します。したがって、cookieメソッドを選択する場合、以前のリクエストでEndeca Serverによって返されたcookieを後続のリクエストのルーティングに使用する必要があります。
セッション・アフィニティの特定のメソッドを使用するためにデータ・ドメインを構成するには、次の手順を実行します。
  1. コマンドライン・ウィンドウを使用して(たとえば、Windowsのコマンド・プロンプトを開いて)、endeca-cmdディレクトリに移動します。
  2. データ・ドメイン・プロファイルを構成する場合、次の例のようなコマンドを使用します。
    endeca-cmd put-dd-profile MyProfile --session-id-type header --session-id-key x-endeca-session-id

    または、クラスタWebサービス・リクエストで次の構文を使用することもできます(この略例では、セッション・アフィニティ構成に固有のパラメータのみをリストし、他のデータ・ドメイン・パラメータを省略しています)。

    <ns1:putDataDomainProfile xmlns:ns1="http://www.endeca.com/endeca-server/cluster/2/0">
      <ns1:dataDomainProfile>
      ...
      <ns10:sessionIdType xmlns:ns10="http://www.endeca.com/endeca-server/types/2/0">header</ns10:sessionIdType>
      <ns11:sessionIdKey xmlns:ns11="http://www.endeca.com/endeca-server/types/2/0">X-Endeca-Session-ID</ns11:sessionIdKey>
      </ns1:dataDomainProfile>
    </ns1:putDataDomainProfile>