パーシステンス設定

仮想サーバーにより実行されるサービスへの接続を維持したい場合(電子商取引で使用される接続など)は、その仮想サーバーに対してパーシステンスを構成する必要があります。アプライアンスは、まず構成されている負荷分散方式に基づいてサーバーを選択しますが、それ以降は同じクライアントからのすべての要求を同じサーバーに転送します。

パーシステンスを構成すると、サーバーの初回選択時以降の要求で、負荷分散方式が無視されます。構成したパーシステンスの適用先サービスがダウンしている場合は、負荷分散方式に基づいて新しいサービスが選択され、同じクライアントからのそれ以降の要求はそのサービスに永続的に割り当てられます。選択したサービスがOut Of Service状態の場合、未処理の要求の処理は続行されますが、新しい要求や接続は受け付けられません。シャットダウン期間が経過すると、既存の接続が閉じます。次の表は、設定できるパーシステンスの種類を示しています。

永続性タイプ 固定接続数
Source IP、SSL Session ID、Rule、DESTIP、SRCIPDESTIP 250K
CookieInsert、URL passive、Custom Server ID メモリの上限。CookieInsertの場合、タイムアウトが0でなければ、メモリの上限に達するまで任意の数の接続が許可されます。

表1. 同時持続的接続の数の制限

アプライアンスのリソース不足により構成済みのパーシステンスが維持できない場合は、負荷分散方式に基づいてサーバーが選択されます。パーシステンスは、その種類で構成された時間だけ保持されます。一部のパーシステンスの種類は、特定の仮想サーバーに固有です。次の表は、それらの関係を示しています。

Persistence TypeHeader 1 HTTP HTTPS TCP UDP/IP SSL_Bridge
接続元IP はい はい はい はい はい
CookieInsert はい はい いいえ いいえ いいえ
SSL Session ID いいえ はい いいえ いいえ はい
URL Passive はい はい いいえ いいえ いいえ
Custom Server ID はい はい いいえ いいえ いいえ
規則 はい はい いいえ いいえ いいえ
SRCIPDESTIP - - はい はい -
DESTIP - - はい はい -

表2. 仮想サーバーのタイプごとに使用可能な永続性タイプ

仮想サーバーのグループに対して、パーシステンスを指定することもできます。グループに対してパーシステンスを有効にすると、クライアント要求を受信した仮想サーバーに関係なく、クライアント要求は同じサーバーに送信されます。パーシステンスの構成時間が経過すると、着信したクライアント要求に対して、グループの任意の仮想サーバーが選択されます。

一般的に使用される2つのパーシステンスの種類は、Cookieに基づくパーシステンスとURLのサーバーIDに基づくパーシステンスです。

Cookieに基づくパーシステンスの設定

Cookieに基づくパーシステンスを有効にすると、Citrix ADCアプライアンスは、HTTP応答のSet-Cookieヘッダーフィールドに、HTTP Cookieを追加します。Cookieには、HTTP要求の送信先のサービスに関する情報が含まれています。クライアントはCookieを保存して、それ以降のすべての要求に含めます。ADCはCookieを使用して、これらの要求に対するサービスを選択します。HTTPまたはHTTPSタイプの仮想サーバーに対して、この種類のパーシステンスを使用できます。

Citrix ADCアプライアンスは、<NSC_XXXX>= <ServiceIP> <ServicePort>のCookieを挿入します。

各項目の意味は次のとおりです:

  • <<NSC_XXXX>は、仮想サーバー名から導出される仮想サーバーIDです。
  • <<ServiceIP>は、サービスのIPアドレスの16進数値です。
  • <<ServicePort> は、サービスのポートの16進数値です。

ADCは、Cookieを挿入するときにServiceIPとServicePortを暗号化し、Cookieを受け取ったときにこれらを復号化します。

注:クライアントがHTTP Cookieを保存できない場合は、以降の要求にHTTP Cookieが含まれなくなり、パーシステンスは適用されません。

デフォルトでは、ADCアプライアンスはNetscape仕様に準拠して、HTTP Cookieバージョン0を送信します。また、RFC 2109に準拠して、バージョン1を送信することもできます。

HTTP Cookieに基づくパーシステンスに対して、タイムアウト値を設定できます。以下の点に注意してください:

  • HTTP Cookieバージョン0が使用されている場合、Citrix ADCアプライアンスは、世界協定時刻(GMT)とタイムアウト値の合計として計算される、Cookieの有効期限(HTTP Cookieのexpires属性)の絶対GMTを挿入します。
  • HTTP Cookieバージョン1が使用されている場合、ADCアプライアンスは相対有効期限(HTTP CookieのMax-Age属性)を挿入します。この場合、クライアントソフトウェアが実際の有効期限を計算します。

注:現在インストールされているほとんどのクライアントソフトウェア(Microsoft Internet ExplorerとNetscapeブラウザー)は、HTTP Cookieバージョン0を理解しますが、一部のHTTPプロキシはHTTP Cookieバージョン1を理解します。

タイムアウト値を0に設定すると、使用されているHTTP Cookieバージョンに関係なく、ADCアプライアンスは有効期限を指定しなくなります。この場合、有効期限はクライアントソフトウェアに依存し、そのようなCookieは、そのソフトウェアがシャットダウンすると、無効になります。この種類のパーシステンスはシステムリソースを消費しません。したがって、好きな数だけ永続的なクライアントを含めることができます。

管理者はHTTPCookieのバージョンを変更できます。

CLIを使用してHTTPCookieのバージョンを変更するには

コマンドプロンプトで次を入力します。

set ns param [-cookieversion ( 0 | 1 )]
<!--NeedCopy-->

例:

set ns param -cookieversion 1
<!--NeedCopy-->

GUIを使用してHTTPCookieのバージョンを変更するには

  1. [System] > [Settings]に移動します。
  2. 詳細ペインで、[Change HTTP Parameters]をクリックします。
  3. [Configure HTTP Parameters]ダイアログボックスの[Cookie]で、[Version 0]または[Version 1]を選択します。

注:パラメーターについて詳しくは、「Cookieに基づくパーシステンスの設定」を参照してください。

CLIを使用してCookieに基づいて永続性を構成するには

コマンドプロンプトで次のコマンドを入力し、Cookieに基づくパーシステンスを構成して確認します。

set lb vserver <name> -persistenceType COOKIEINSERT

show lb vserver <name>
<!--NeedCopy-->

例:

set lb vserver vserver-LB-1 -persistenceType COOKIEINSERT
Done
show lb vserver vserver-LB-1
    vserver-LB-1 (10.102.29.60:80) - HTTP   Type: ADDRESS
    .
    .
    .
    Persistence: COOKIEINSERT (version 0)
    Persistence Timeout: 2 min
    .
    .
    .
 Done
<!--NeedCopy-->

GUIを使用してCookieに基づいて永続性を構成するには

  1. [Traffic Management]>[Load Balancing]>[Virtual Servers]の順に選択します。
  2. 詳細ペインで、パーシステンスを設定する仮想サーバー(たとえば、vserver-LB-1)を選択し、[Open]をクリックします。
  3. [Configure Virtual Server (Load Balancing)]ダイアログボックスの[Method and Persistence]タブにある[Persistence]リストで、[COOKIEINSERT]を選択します。
  4. [Time-out (min)]テキストボックスに、タイムアウト値(たとえば、「2」)を入力します。
  5. [OK] をクリックします。
  6. パーシステンスを設定した仮想サーバーを選択して、ペインの下部にある[Details]セクションを表示し、仮想サーバーが正しく構成されていることを確認します。

URLのサーバーIDに基づくパーシステンスの構成

Citrix ADCアプライアンスは、URLのサーバーIDに基づいて永続性を維持できます。「URLパッシブパーシステンス」と呼ばれる方法では、ADCはサーバー応答からサーバーIDを抽出して、クライアント要求のURLクエリに埋め込みます。サーバーIDは、16進数で表記されたIPアドレスとポートです。ADCは、以降のクライアント要求からサーバーIDを抽出し、それを使用してサーバーを選択します。

URLパッシブパーシステンスでは、ペイロード式またはポリシーインフラストラクチャ式を設定し、クライアント要求に含まれるサーバーIDの場所を指定する必要があります。式について詳しくは、「ポリシーの構成とリファレンス」を参照してください。

注:サーバーIDをクライアント要求から抽出できない場合、サーバーの選択は負荷分散方式に基づいて行われます。

:ペイロード式

式「URLQUERY contains sid=」では、クライアント要求のURLクエリから、「sid=」の後のサーバーIDが抽出されます。したがって、URLhttp://www.citrix.com/index.asp?\&sid;=c0a864100050のリクエストは、IPアドレス10.102.29.10とポート80のサーバーに送信されます。

タイムアウト値は、この種類のパーシステンスには影響しません。このパーシステンスは、サーバーIDがクライアント要求から抽出できる限り維持されます。この種類のパーシステンスはシステムリソースを消費しないため、保持されるクライアント数に制限はありません。

注:

パラメーターについて詳しくは、「負荷分散」を参照してください。

CLIを使用してURLのサーバーIDに基づいて永続性を構成するには

コマンドプロンプトで次のコマンドを入力し、URLのサーバーIDに基づくパーシステンスを構成して確認します。

set lb vserver <name> -persistenceType URLPASSIVE

<show lb vserver <name>
<!--NeedCopy-->

例:

set lb vserver vserver-LB-1 -persistenceType URLPASSIVE
Done
show lb vserver vserver-LB-1
    vserver-LB-1 (10.102.29.60:80) - HTTP   Type: ADDRESS
    .
    .
    .
    Persistence: URLPASSIVE
    Persistence Timeout: 2 min
    .
    .
    .
Done
<!--NeedCopy-->

GUIを使用してURLのサーバーIDに基づいて永続性を構成するには

  1. [Traffic Management]>[Load Balancing]>[Virtual Servers]の順に選択します。
  2. 詳細ペインで、パーシステンスを設定する仮想サーバー(たとえば、vserver-LB-1)を選択し、[Open]をクリックします。
  3. [Configure Virtual Server (Load Balancing)]ダイアログボックスの[Method and Persistence]タブにある[Persistence]リストで、[URLPASSIVE]を選択します。
  4. [Time-out (min)]テキストボックスに、タイムアウト値(たとえば、「2」)を入力します。
  5. [Rule]ボックスに、有効な式を入力します。また、[Rule]ボックスの横にある[Configure]をクリックし、[Create Expression]ダイアログボックスを使用して式を作成します。
  6. [OK] をクリックします。
  7. パーシステンスを設定した仮想サーバーを選択して、ペインの下部にある[Details]セクションを表示し、仮想サーバーが正しく構成されていることを確認します。
パーシステンス設定