パーシステンス設定
仮想サーバーにより実行されるサービスへの接続を維持したい場合(電子商取引で使用される接続など)は、その仮想サーバーに対してパーシステンスを構成する必要があります。アプライアンスは、まず構成されている負荷分散方式に基づいてサーバーを選択しますが、それ以降は同じクライアントからのすべての要求を同じサーバーに転送します。
パーシステンスを構成すると、サーバーの初回選択時以降の要求で、負荷分散方式が無視されます。構成したパーシステンスの適用先サービスがダウンしている場合は、負荷分散方式に基づいて新しいサービスが選択され、同じクライアントからのそれ以降の要求はそのサービスに永続的に割り当てられます。選択したサービスが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のバージョンを変更するには
- [System] > [Settings]に移動します。
- 詳細ペインで、[Change HTTP Parameters]をクリックします。
- [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に基づいて永続性を構成するには
- [Traffic Management]>[Load Balancing]>[Virtual Servers]の順に選択します。
- 詳細ペインで、パーシステンスを設定する仮想サーバー(たとえば、vserver-LB-1)を選択し、[Open]をクリックします。
- [Configure Virtual Server (Load Balancing)]ダイアログボックスの[Method and Persistence]タブにある[Persistence]リストで、[COOKIEINSERT]を選択します。
- [Time-out (min)]テキストボックスに、タイムアウト値(たとえば、「2」)を入力します。
- [OK] をクリックします。
- パーシステンスを設定した仮想サーバーを選択して、ペインの下部にある[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に基づいて永続性を構成するには
- [Traffic Management]>[Load Balancing]>[Virtual Servers]の順に選択します。
- 詳細ペインで、パーシステンスを設定する仮想サーバー(たとえば、vserver-LB-1)を選択し、[Open]をクリックします。
- [Configure Virtual Server (Load Balancing)]ダイアログボックスの[Method and Persistence]タブにある[Persistence]リストで、[URLPASSIVE]を選択します。
- [Time-out (min)]テキストボックスに、タイムアウト値(たとえば、「2」)を入力します。
- [Rule]ボックスに、有効な式を入力します。また、[Rule]ボックスの横にある[Configure]をクリックし、[Create Expression]ダイアログボックスを使用して式を作成します。
- [OK] をクリックします。
- パーシステンスを設定した仮想サーバーを選択して、ペインの下部にある[Details]セクションを表示し、仮想サーバーが正しく構成されていることを確認します。