Citrix ADCアプライアンスとクライアント/サーバーとの通信方法

Citrix ADCアプライアンスは通常、サーバーファームの前に展開され、クライアント側で構成を変更しなくても、クライアントとサーバーの透過的なTCPプロキシとして機能します。この基本的な動作モードは「Request Switching技術」と呼ばれ、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アドレスは、次のとおりです。

  • 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:仮想サーバーベースの接続

image

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

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

トラフィック管理構築ブロック

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

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

図2:トラフィック管理構築ブロックのしくみ

image

シンプルな負荷分散構成

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

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

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

image

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

仮想サーバーについて

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

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

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

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

image

上の図は、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アプライアンスとクライアント/サーバーとの通信方法