ADC

負荷分散の方法

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

負荷分散の基本

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

図1:負荷分散アーキテクチャ

ロードバランシングアーキテクチャ

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

一般的なCitrix ADC負荷分散設定で設定するエンティティは次のとおりです。

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

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

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

トポロジーの理解

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

図2:基本的な負荷分散トポロジ

ロードバランシングトポロジ

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

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

次の図は、前述の表で説明した負荷分散のサンプル値と必須パラメータを示しています。

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

負荷分散エンティティモデル

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

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

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

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

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

次の表に、ワイルドカード構成の種類とその使用時期について説明します。

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

注:NetScaler ADCアプライアンスをグローバル(ワイルドカード)ポートを使用するトランスペアレントパススルーとして構成している場合は、エッジモードをオンにすることができます。 詳細については、「エッジモードの設定」を参照してください。

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

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

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

  1. HTTP
  2. TCP
  3. ANY

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

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

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

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

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

set ns param –httpPort <port>

show ns param
<!--NeedCopy-->

例 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
        ...
        ...
<!--NeedCopy-->

例 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
>
<!--NeedCopy-->

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

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