Citrix ADC

Citrix ADCアプライアンスがクライアントおよびサーバーと通信する方法

Citrix ADCアプライアンスは、通常、サーバーファームの前に展開され、クライアントとサーバー間の透過的なTCPプロキシとして機能し、クライアント側の設定は必要ありません。この基本的な操作モードは、要求スイッチング技術と呼ばれ、Citrix ADC機能の中核です。Request Switchingにより、アプライアンスはTCP接続を多重化してオフロードし、固定接続を維持し、要求(アプリケーションレイヤー)レベルでトラフィックを管理することができます。これらの機能が実現されるのは、アプライアンスがHTTP要求をそのTCP接続から分離できるからです。

構成によっては、アプライアンスが要求をサーバーに転送する前に、トラフィックを処理する場合があります。たとえば、クライアントがサーバー上の安全なアプリケーションにアクセスしようとする場合に、アプライアンスは必要なSSL処理を実行してから、トラフィックをサーバーに送信することがあります。

サーバーリソースへの効率的かつ安全なアクセスを容易にするために、アプライアンスは総称してCitrix ADC所有のIPアドレスと呼ばれる一連のIPアドレスを使用します。ネットワークトラフィックを管理するには、Citrix ADCが所有するIPアドレスを、構成の構成要素となる仮想エンティティに割り当てます。たとえば、負荷分散を構成するには、仮想サーバーを作成し、クライアント要求を受信してサービスに配布します。これらのサービスは、サーバー上のアプリケーションとして振る舞うエンティティです。

Citrix ADCが所有するIPアドレスについて

プロキシとして機能するために、Citrix ADCアプライアンスはさまざまなIPアドレスを使用します。Citrix ADCが所有する主要なIPアドレスは次のとおりです。

  • Citrix ADC IP(NSIP)アドレス

    NSIPアドレスは、アプライアンス自体に対する管理アクセスや一般的なシステムアクセス、および高可用性構成のアプライアンス間の通信用のIPアドレスです。

  • 仮想サーバーIP(VIP)アドレス

    VIPアドレスは仮想サーバーに関連付けられたIPアドレスです。クライアントが接続するパブリックIPアドレスです。広範なトラフィックを管理するアプライアンスでは、多くのVIPが構成されます。

  • サブネットIP(SNIP)アドレス

    SNIPアドレスは、接続の管理とサーバーの監視で使用します。各サブネットに複数のSNIPアドレスを指定できます。SNIPアドレスはVLANにバインドできます。

  • IPセット

    IPセットは、アプライアンス上でSNIPとして構成されるIPアドレスのセットです。IPセットには、そのセットに含まれるIPアドレスの用途を識別するためのわかりやすい名前を付けます。

  • ネットプロファイル

    ネットプロファイル(ネットワークプロファイル)には、1つのIPアドレスまたはIPセットが含まれます。ネットプロファイルは負荷分散またはコンテンツスイッチ仮想サーバー、サービス、サービスグループ、またはモニターにバインドされます。アプライアンスが物理サーバーまたはピアと通信するときは、このプロファイルでソースIPアドレスとして指定されているアドレスが使用されます。

トラフィックフローの管理方法

Citrix ADCアプライアンスはTCPプロキシとして機能するため、サーバーにパケットを送信する前にIPアドレスを変換します。仮想サーバーを構成すると、クライアントはサーバーに直接接続するのではなく、Citrix ADCアプライアンス上のVIPアドレスに接続します。仮想サーバーの設定に基づく判断として、アプライアンスは適切なサーバーを選択し、クライアントの要求をそのサーバーに送信します。デフォルトでは、次の図に示すように、アプライアンスはSNIPアドレスを使用して、サーバーとの接続を確立します。

図1:仮想サーバベースの接続

画像

仮想サーバーがない場合、アプライアンスは受信した要求をサーバーへ透過的に転送します。この動作は、透過モードと呼ばれます。透過モードで動作している場合、アプライアンスは、着信したクライアント要求のソースIPアドレスをSNIPアドレスに変換しますが、宛先IPアドレスは変更しません。このモードが動作するには、L2またはL3モードが適切に構成されている必要があります。

サーバーが実際のクライアントIPアドレスを必要とする場合には、アプライアンスを構成して、クライアントIPアドレスを追加フィールドとして挿入してHTTPヘッダーを変更するか、またはサーバーとの接続にSNIPではなくクライアントIPアドレスを使用することができます。

トラフィック管理ビルディングブロック

Citrix ADCアプライアンスの構成は、通常、トラフィック管理のビルディングブロックとして機能する一連の仮想エンティティで構成されます。この構築ブロックの手法により、トラフィックフローを分離できます。仮想エンティティは抽象型であり、通常、トラフィックを処理するためのIPアドレス、ポート、およびプロトコルハンドラーを表しています。クライアントは、これらの仮想エンティティを介して、アプリケーションとリソースにアクセスします。最もよく使用されるエンティティは、「仮想サーバー」と「サービス」です。仮想サーバーはサーバーファームまたはリモートネットワーク内のサーバーグループとして振る舞い、サービスは各サーバー上の個々のアプリケーションとして機能します。

ほとんどの機能とトラフィックの設定値は、仮想エンティティを介して有効化されます。たとえば、特定の仮想サーバー経由でサーバーファームに接続するクライアントへのすべてのサーバー応答が、アプライアンスにより圧縮されるように構成できます。特定の環境に合わせてアプライアンスを構成するには、適切な機能を確認して仮想エンティティの正しい組み合わせを選択し、それらの機能を提供する必要があります。ほとんどの機能は、相互にバインドされた仮想エンティティをカスケードすることで提供されます。この場合の仮想エンティティは、提供されるアプリケーションの最終的な構造に組み込まれるブロックのようなものです。仮想エンティティを追加、削除、変更、バインド、有効化、および無効化して、機能を構成できます。次の図は、ここで説明されている概念を示しています。

図2:トラフィック管理のビルディングブロックの仕組み

画像

シンプルなロード・バランシング構成

次の図に示す例では、Citrix ADCアプライアンスがロードバランサーとして機能するように構成されています。この構成では、負荷分散に固有の仮想エンティティを構成し、それらを特定の順序でバインドする必要があります。ロードバランサーとして機能する場合、アプライアンスはクライアント要求を複数のサーバー間に分散して、リソース使用率を最適化します。

一般的な負荷分散構成の基本的な構築ブロックは、サービスと負荷分散仮想サーバーです。サービスはサーバー上のアプリケーションとして振る舞い、仮想サーバーはクライアントが接続する単一のIPアドレスを提供してサーバーを抽象化します。クライアント要求がサーバーに送信されるようにするため、各サービスを仮想サーバーにバインドする必要があります。つまり、各サーバーに対してサービスを作成し、サービスを仮想サーバーにバインドする必要があります。クライアントはVIPアドレスを使用してCitrix ADCアプライアンスに接続します。アプライアンスはVIPアドレスにクライアント要求を受信すると、負荷分散アルゴリズムによって決定されたサーバーに要求を送信します。負荷分散機能は、モニターと呼ばれる仮想エンティティを使用して、特定の構成済みサービス(サーバーおよびアプリケーション)が要求を受信できるかどうかを追跡します。

図3:仮想サーバ、サービス、モニタの負荷分散

画像

負荷分散アルゴリズムを構成するほか、負荷分散構成の動作やパフォーマンスに関する複数のパラメーターを構成できます。たとえば、送信元のIPアドレスに基づいてパーシステンスが維持されるように仮想サーバーを構成できます。この場合、特定のIPアドレスからのすべての要求が同じサーバーに送信されます。

仮想サーバについて

仮想サーバーは、サーバー上でホストされているアプリケーションにアクセスするために外部クライアントが使用できる名前付きのCitrix ADCエンティティです。仮想サーバーは英数字名、仮想IP(VIP)アドレス、ポート、およびプロトコルによって表されます。仮想サーバーの名前はローカル上でのみ意味を持ち、仮想サーバーを識別しやすくするために指定されます。クライアントがサーバー上のアプリケーションにアクセスを試みる場合、クライアントは物理サーバーのIPアドレスではなく、VIPに要求を送信します。アプライアンスがVIPアドレスで要求を受信すると、仮想サーバーでの接続を終了して、クライアントに代わってサーバーとの独自の接続を使用します。仮想サーバーのポートおよびプロトコル設定値によって、その仮想サーバーが振る舞うアプリケーションが決定されます。たとえば、Webサーバーは、ポートとプロトコルがそれぞれ80とHTTPに設定された仮想サーバーとサービスによって構成されます。複数の仮想サーバーで同じVIPアドレスを使用して、異なるプロトコルとポートを使用することもできます。

仮想サーバーは、さまざまな機能の配信ポイントとして動作します。圧縮、キャッシュ、SSLオフロードなどのほとんどの機能は、通常、仮想サーバーで有効になっています。アプライアンスはVIPアドレスで要求を受信すると、要求を受信したポートとそのプロトコルによって、適切な仮想サーバーを選択します。次にアプライアンスは、仮想サーバーに構成されている機能に従って要求を処理します。

ほとんどの場合、仮想サーバーはサービスと協調して動作します。複数のサービスを1つの仮想サーバーにバインドすることができます。これらのサービスは、サーバーファーム内の物理サーバーで動作するアプリケーションとして振る舞います。アプライアンスは、VIPアドレスで受信した要求を処理した後、仮想サーバーで設定された負荷分散アルゴリズムの決定に従って、要求をサーバーに転送します。次の図は、これらの概念を示しています。

図4:単一の VIP アドレスを持つ複数の仮想サーバ

画像

上の図は、VIPアドレスが同じでポートとプロトコルが異なる、2つの仮想サーバーで構成された環境を示しています。これらの各仮想サーバーには、2つのサービスがバインドされています。サービスs1とs2はVS_HTTPにバインドされており、サーバー1とサーバー2のHTTPアプリケーションとして動作しています。サービスs3とs4はVS_SSLにバインドされており、サーバー2とサーバー3のSSLアプリケーションとして動作しています(サーバー2は、HTTPアプリケーションとSSLアプリケーションの両方を提供します)。アプライアンスがVIPアドレスでHTTP要求を受信すると、VS_HTTPの設定値により指定されたとして要求を処理し、サーバー1またはサーバー2に要求を送信します。同様に、アプライアンスがVIPアドレスでHTTPS要求を受信すると、VS_SSLの設定値により指定されたとして要求を処理し、サーバー2またはサーバー3に要求を送信します。

仮想サーバーのIPアドレス、ポート番号、またはプロトコルに特定の値を指定せずに、ワイルドカード文字を使用して指定することもできます。このような仮想サーバーは、ワイルドカード仮想サーバーと呼ばれます。たとえば、特定のVIPの代わりにワイルドカード文字を使用し、特定のポート番号で仮想サーバーを構成した場合、アプライアンスは、そのプロトコルおよびポート宛のすべてのトラフィックをインターセプトして処理します。特定のVIPおよびポート番号の代わりにワイルドカード文字を使用して仮想サーバーを構成した場合は、そのプロトコルのすべてのトラフィックをインターセプトして処理します。

仮想サーバーは、以下のカテゴリに分類できます。

  • 負荷分散仮想サーバー

    要求を受信して、適切なサーバーにリダイレクトします。適切なサーバーの選択は、ユーザーが設定したさまざまな負荷分散方式に基づいて行われます。

  • キャッシュリダイレクト仮想サーバー

    動的コンテンツに対するクライアント要求を配信元のサーバーにリダイレクトし、静的コンテンツに対するクライアント要求をキャッシュサーバーにリダイレクトします。キャッシュリダイレクト仮想サーバーは、通常、負荷分散仮想サーバーと一緒に動作します。

  • コンテンツスイッチ仮想サーバー

    クライアントが要求したコンテンツに基づいて、トラフィックをサーバーに送信します。たとえば、画像に対するすべてのクライアント要求を、画像のみを処理するサーバーに送信するコンテンツスイッチ仮想サーバーを作成できます。コンテンツスイッチ仮想サーバーは、通常、負荷分散仮想サーバーと一緒に動作します。

  • VPN(Virtual Private Network:仮想プライベートネットワーク)仮想サーバー

    トンネリングされたトラフィックを復号化して、イントラネットアプリケーションに送信します。

  • SSL仮想サーバー

    SSLトラフィックを受信して復号化し、適切なサーバーにリダイレクトします。適切なサーバーの選択は、負荷分散仮想サーバーの選択と類似しています。

サービスの理解

サービスは、サーバー上のアプリケーションとして機能します。通常、サービスは仮想サーバーと組み合わされていますが、仮想サーバーがなくてもアプリケーション固有のトラフィックを管理できます。たとえば、Citrix ADCアプライアンス上にWebサーバーアプリケーションを表すHTTPサービスを作成できます。このWebサーバーでホストされたWebサイトへのアクセスをクライアントが試みると、アプライアンスがHTTP要求をインターセプトしてWebサーバーとの透過的な接続を作成します。

サービス専用モードでは、アプライアンスがプロキシとして機能します。NetScalerはクライアント接続を終了し、SNIPアドレスを使用してサーバーとの接続を確立し、着信したクライアント要求のソースIPアドレスをSNIPアドレスに変換します。クライアントは要求をサーバーのIPアドレスに直接送信しますが、サーバーは要求がSNIPアドレスから送られてきたものと見なします。アプライアンスはIPアドレス、ポート番号、およびシーケンス番号を変換します。

サービスは、機能を適用するポイントでもあります。SSL Accelerationの例を考えてみましょう。この機能を使用するには、SSLサービスを作成して、そのサービスにSSL証明書をバインドする必要があります。アプライアンスはHTTPS要求を受信すると、トラフィックを復号化し、クリアテキストとしてサーバーに送信します。サービス専用モードでは、限られたわずかな機能しか設定できません。

サービスは「モニター」と呼ばれるエンティティを使用して、アプリケーションのヘルスを追跡します。すべてのサービスには、サービスタイプに基づく「デフォルトモニター」がバインドされています。モニターで設定された値に従って、アプライアンスは定期的にアプリケーションにプローブを送信し、アプリケーションの状態を判定します。プローブが失敗した場合、アプライアンスはサービスがダウンしたものとしてマークします。このような場合、アプライアンスは、適切なエラーメッセージでクライアント要求に応答するか、設定された負荷分散ポリシーに従って要求を転送します。

Citrix ADCアプライアンスがクライアントおよびサーバーと通信する方法