Citrix ADC

負荷分散の仕組み

基本的な負荷分散設定では、クライアントはCitrix ADCアプライアンスで構成された仮想サーバーのIPアドレスに要求を送信します。仮想サーバーは、負荷分散アルゴリズムと呼ばれる事前設定されたパターンに従って、負荷分散アプリケーションサーバーに分散します。場合によっては、負荷分散仮想サーバーに、特定の IP アドレスではなく、ワイルドカードアドレスを割り当てることもできます。アプライアンスのグローバルHTTPポートを指定する手順については、「 グローバルHTTPポート」を参照してください。

負荷分散の基本

負荷分散の設定には、負荷分散仮想サーバーと複数の負荷分散アプリケーションサーバーが含まれます。仮想サーバーは、着信クライアント要求を受信し、負荷分散アルゴリズムを使用してアプリケーションサーバーを選択し、選択したアプリケーションサーバーに要求を転送します。次の概念図は、一般的な負荷分散配置を示しています。もう 1 つのバリエーションとして、グローバル HTTP ポートを割り当てます。

図1:ロード・バランシング・アーキテクチャ

lb-architecture

負荷分散仮想サーバーは、いくつかのアルゴリズム(または方法)を使用して、管理する負荷分散サーバー間で負荷を分散する方法を決定できます。デフォルトの負荷分散方式は、最小接続方式です。この方式では、Citrix ADCアプライアンスは、現在アクティブなユーザー接続が最も少ない負荷分散アプリケーションサーバーに各着信クライアント接続を転送します。

一般的なCitrix ADC負荷分散セットアップで構成するエンティティは次のとおりです。

  • 仮想サーバの負荷分散。クライアントが特定の負荷分散された Web サイトまたはアプリケーションに対する接続要求を送信する IP アドレス、ポート、およびプロトコルの組み合わせ。アプリケーションがインターネットからアクセス可能な場合、仮想サーバーの IP (VIP) アドレスはパブリック IP アドレスです。アプリケーションがローカルエリアネットワーク (LAN) またはワイドエリアネットワーク (WAN) からのみアクセス可能な場合、VIP は通常、プライベート (ICANN 非ルーティング可能) IP アドレスです。
  • サービス。特定の負荷分散アプリケーションサーバーに要求をルーティングするために使用される IP アドレス、ポート、およびプロトコルの組み合わせ。サービスは、アプリケーションサーバー自体、または複数のアプリケーションをホストするサーバー上で実行されているアプリケーションを論理的に表現できます。サービスを作成したら、負荷分散仮想サーバーにバインドします。
  • サーバーオブジェクト。IP アドレスでサーバーを識別する代わりに、物理サーバーに名前を割り当てることができる仮想エンティティ。サーバーオブジェクトを作成する場合、サービスの作成時にサーバーの IP アドレスの代わりにその名前を指定できます。それ以外の場合は、サービスの作成時にサーバーの IP アドレスを指定する必要があり、その IP アドレスがサーバーの名前になります。
  • モニター。Citrix ADCアプライアンス上のエンティティで、サービスを追跡し、サービスが正しく動作していることを確認します。モニタは、割り当てた各サービスを定期的にプローブ(またはヘルスチェックを実行)します。タイムアウトで指定された時間内にサービスが応答せず、指定した数のヘルスチェックが失敗した場合、そのサービスには DOWN とマークされます。Citrix ADCアプライアンスは、負荷分散を実行するときに、サービスが応答を終了する原因となった問題が修正されるまで、そのサービスをスキップします。

負荷分散セットアップの仮想サーバー、サービス、および負荷分散アプリケーションサーバーは、インターネットプロトコルバージョン 4 (IPv4) またはインターネットプロトコルバージョン 6 (IPv6) の IP アドレスのいずれかを使用できます。IPv4 アドレスと IPv6 アドレスを 1 つのロードバランシングセットアップで混在させることができます。

負荷分散設定のバリエーションについては、次のユースケースを参照してください。

トポロジについて

負荷分散設定では、負荷分散サーバーは、クライアントとサーバーファームの間に論理的に配置され、サーバーファーム内のサーバーへのトラフィックフローを管理します。Citrix ADCアプライアンスでは、アプリケーションサーバーはサービスと呼ばれる仮想エンティティで表されます。次の図は、基本的な負荷分散構成のトポロジを示しています。

図2:基本的なロードバランシングトポロジ

ローカライズされた画像

この図では、ロードバランシングを使用してサーバへのトラフィックフローを管理します。仮想サーバーは、クライアントからの要求に対してサービスを選択して割り当てます。サービスService-HTTP-1 とService-HTTP-2 が作成され、Vserver-LB-1 という名前の仮想サーバーにバインドされるシナリオを考えてみましょう。Vserver-LB-1 は、クライアント要求をService-HTTP-1 またはService-HTTP-2 に転送します。Citrix ADCアプライアンスは、最小接続負荷分散方式を使用して、各要求のサービスを選択します。次の表に、アプライアンス上で設定する必要がある基本エンティティの名前と値を示します。

エンティティ 名前 IPアドレス ポート プロトコル
仮想サーバ Vserver-LB-1 10.102.29.60 80 HTTP
サービス Service-HTTP-1 10.102.29.5 80 HTTP
  Service-HTTP-2 10.102.29.6 80 HTTP
モニター デフォルト なし なし なし

次の図は、前述の表で説明したロードバランシングのサンプル値と必須パラメータを示しています。

図3:負荷分散エンティティモデル

ポンド・エンティティ・モデル

IP アドレスとポートの代わりにワイルドカードを使用する

場合によっては、仮想サーバーの IP アドレスまたはポート、またはサービスのポートにワイルドカードを使用しなければならないことがあります。次の場合は、ワイルドカードの使用が必要な場合があります。

  • Citrix ADCアプライアンスが透過パススルーとして構成されている場合、Citrix ADCアプライアンスは、送信先のIPまたはポートに関係なく、送信されるすべてのトラフィックを受け入れる必要があります。
  • 1 つ以上のサービスがよく知られていないポートをリッスンする場合。
  • 1 つ以上のサービスの場合は、時間の経過とともに、リッスンするポートを変更します。
  • 単一のCitrix ADCアプライアンスで構成できるIPアドレスとポート数の上限に達した場合。
  • 特定の仮想 LAN 上のすべてのトラフィックをリッスンする仮想サーバーを作成する場合。

ワイルドカードで構成された仮想サーバーまたはサービスがトラフィックを受信すると、Citrix ADCアプライアンスは実際のIPアドレスまたはポートを判別し、サービスおよび関連する負荷分散アプリケーションサーバーの新しいレコードを作成します。動的に作成されたこれらのレコードは、動的に学習されたサーバおよびサービスレコードと呼ばれます。

たとえば、ファイアウォールの負荷分散構成では、IP アドレスとポートの両方にワイルドカードを使用できます。ワイルドカード TCP サービスをこの種類の負荷分散仮想サーバーにバインドすると、仮想サーバーは他のサービスまたは仮想サーバーと一致しないすべての TCP トラフィックを受信して処理します。

次の表では、さまざまな種類のワイルドカード構成と、それぞれを使用するタイミングについて説明します。

IP ポート プロトコル 説明
* * TCP Citrix ADCアプライアンス上の任意のIPアドレスおよびポートに送信されるトラフィックを受け入れる一般的なワイルドカード仮想サーバー。ワイルドカード化された仮想サーバーを使用する場合、アプライアンスは各サービスのIPとポートを動的に学習し、トラフィックを処理するときに必要なレコードを作成します。
* * TCP ファイアウォールの負荷分散仮想サーバー。ファイアウォールサービスをこの仮想サーバーにバインドできます。Citrix ADCアプライアンスは、トラフィックをファイアウォール経由で宛先に渡します。
IPアドレス * TCP、UDP、およびANY ポートに関係なく、指定された IP アドレスに送信されたすべてのトラフィックを受け入れる仮想サーバ。このタイプの仮想サーバには、トラフィックをリダイレクトするサービスを明示的にバインドする必要があります。それは動的にそれらを学習しません。
      注意: グローバルHTTPポートのサービスまたは仮想サーバーは構成しません。この場合、特定のポートをグローバル HTTP ポートとして設定します(たとえば、ns param-httpPort 80 を設定します)。アプライアンスは、ポート番号と一致するすべてのトラフィックを受け入れ、HTTP トラフィックとして処理します。アプライアンスは、このトラフィックのサービスを動的に学習して作成します。
* port SSL, SSL_TCP 特定のポート上の任意の IP アドレスに送信されたすべてのトラフィックを受け入れる仮想サーバ。グローバルな透過的な SSL オフロードに使用されます。同じプロトコルタイプのサービスに対して通常実行されるすべての SSL、HTTP、および TCP 処理が、この特定のポートに送信されるトラフィックに適用されます。アプライアンスは、ポートを使用して、使用するサービスの IP を動的に学習します。—cleartextが指定されていない場合、Citrix ADCアプライアンスはエンドツーエンドSSLを使用します。
* port 該当なし ポートへのトラフィックを受け入れることができる他のすべての仮想サーバ。これらの仮想サーバーにサービスをバインドしないでください。Citrix ADCアプライアンスはこれらの仮想サーバーを動的に学習します。

注:Citrix ADCアプライアンスをグローバル(ワイルドカード)ポートを使用する透過パススルーとして構成している場合は、Edgeモードを有効にすることをお勧めします。 詳細については、「エッジモードの設定」を参照してください。

Citrix ADCアプライアンスは、最初に完全一致を試行して、仮想サーバーとサービスの検索を試みます。見つからない場合は、ワイルドカードに基づいて次の順序で一致を検索します。

  1. 特定の IP アドレスと特定のポート番号
  2. 特定の IP アドレスと* (ワイルドカード) ポート
    • (ワイルドカード) IP アドレスと特定のポート
    • (ワイルドカード) IP アドレスと* (ワイルドカード) ポート

アプライアンスが IP アドレスまたはポート番号で仮想サーバを選択できない場合、要求で使用されるプロトコルに基づいて、次の順序で仮想サーバを検索します。

  1. HTTP
  2. TCP
  3. ANY

グローバル HTTP ポートの設定

グローバル HTTP ポートのサービスまたは仮想サーバは構成しません。代わりに、set ns param コマンドを使用して特定のポートを設定します。このポートを構成すると、Citrix ADCアプライアンスはポート番号に一致するすべてのトラフィックを受け入れ、HTTPトラフィックとして処理し、そのトラフィックのサービスを動的に学習および作成します。

グローバル HTTP ポートとして複数のポート番号を設定できます。単一の set ns param コマンドで複数のポート番号を指定する場合は、ポート番号を 1 つの空白で区切ります。1 つ以上のポートがグローバル HTTP ポートとしてすでに指定されており、現在設定されているポートを削除せずに 1 つ以上のポートを追加する場合は、コマンドで現在のポート番号と新しいポート番号を指定する必要があります。ポート番号を追加する前に、show ns param コマンドを使用して、現在設定されているポートを表示します。

コマンドラインインターフェイスを使用してグローバル HTTP ポートを構成するには

コマンドプロンプトで次のコマンドを入力して、グローバル HTTP ポートを構成し、構成を確認します。

set ns param –httpPort <port>

show ns param

例 1: ポートをグローバル HTTP ポートとして設定する

この例では、ポート 80 がグローバル HTTP ポートとして設定されています。

set ns param -httpPort 80
Done
show ns param
         Global configuration settings:
                          HTTP port(s): 80
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
        ...
        ...

例 2:1 つ以上のグローバル HTTP ポートがすでに設定されている場合のポートの追加**

この例では、ポート 8888 がグローバル HTTP ポートリストに追加されます。ポート 80 は、すでにグローバル HTTP ポートとして設定されています。

> show ns param
        Global configuration settings:
                          HTTP port(s): 80
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
                          Min Path MTU: 576
        ...
        ...
 Done
> set ns param -httpPort 80 8888
 Done
>  show ns param

        Global configuration settings:
                          HTTP port(s): 80,8888
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
                          Min Path MTU: 576

        ...
        ...
 Done
>

構成ユーティリティを使用してグローバル HTTP ポートを構成するには

  1. [システム] > [設定] > [HTTP パラメータの変更] に移動し、HTTP ポート番号を追加します。

負荷分散の仕組み