ADC

パーシステンス設定

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

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

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

前の表の「*」は次のことを指しています。

コアあたり250Kセッションは、パケットエンジンあたりのデフォルトです。パケットエンジンあたり 100 万のセッションエントリを設定するには、次のコマンドを実行します。

set lb parameter -sessionsthreshold <1000000*number of PE>

3 PE システムの場合は、次のコマンドを実行します。

set lb parameter -sessionsthreshold 3000000

表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タイプの仮想サーバーに対して、この種類のパーシステンスを使用できます。

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

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

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

useEncryptedPersistenceCookieオプションを有効にすると、ADCはクッキーを挿入するときにSHA2ハッシュアルゴリズムを使用してServiceIPとServicePortを暗号化し、Cookie を受信すると復号化します。

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

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

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

  • HTTPCookie バージョン0を使用する場合、NetScalerアプライアンスは、ADCアプライアンス上の現在のGMT時間とタイムアウト値の合計として計算されたCookie の有効期限(HTTPクッキーの期限切れ属性)の絶対協定世界時(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に基づくパーシステンスの構成

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

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

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

:ペイロード式

URLQUERY contains sid= という式は、トークン sid= に一致した後、クライアント要求の URL クエリからサーバー 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]セクションを表示し、仮想サーバーが正しく構成されていることを確認します。
パーシステンス設定