ADC

仮想サーバレベルの低速スタートにより、新しいサービスの負荷を段階的にステップアップ

Citrix ADCアプライアンスは、サービスが負荷分散構成に追加された直後、またはDOWNからUPへの状態が変化した直後に、サービスの負荷(サービスが毎秒受信する要求の数)を徐々に増加するように構成できます(このドキュメントでは、「新しいサービス」という用語は、どちらの状況にも使用されます)。選択した負荷値と間隔(手動スロースタート)で手動で負荷を増やしたり、サービスが設定内の他のサービスと同じ数の要求を受信するまで、指定した間隔(自動スロースタート)で負荷を増やしたりするようにアプライアンスを設定できます。新しいサービスの立ち上げ期間中、アプライアンスは設定された負荷分散方式を使用します。

この機能はグローバルには利用できません。仮想サーバーごとに構成する必要があります。この機能は、次の負荷分散方法のいずれかを使用する仮想サーバーでのみ使用できます。

  • ラウンドロビン
  • 最小接続数
  • 最短の応答時間
  • 最小帯域幅
  • 最小パケット数
  • LRTM (最小応答時間法)
  • カスタムロード

この機能を使用するには、次のパラメータを設定する必要があります。

  • 新しいサービスリクエストレートとは、レートが上がるたびに新しいサービスに送信されるリクエストの数またはパーセンテージを増やす量です。つまり、1 秒あたりのリクエスト数か、その時点で既存のサービスが負担する負荷のパーセンテージのいずれかで増分のサイズを指定します。この値を 0 (ゼロ) に設定すると、新しいサービスではスロースタートは実行されません。

    注:自動スロースタートモードでは、指定した値が他のサービスよりも新しいサービスに負荷がかかる場合、最終的な増分は指定された値より小さくなります。

  • 増分間隔(秒単位)。この値を 0 (ゼロ) に設定すると、負荷は自動的に増加しません。手動でインクリメントする必要があります。

自動スロースタートでは、次のいずれかの条件が適用されると、サービスはスロースタートフェーズから取り出されます。

  • 実際の要求レートが、新しいサービス要求レートよりも低くなっています。
  • このサービスは、3 回連続して増加するトラフィックを受信しません。
  • リクエスト率が 200 倍に増加しました。
  • 新しいサービスが受信しなければならないトラフィックの割合は 100 以上です。

手動スロースタートでは、サービスはそのフェーズを終了するまでスロースタートフェーズのままになります。

手動スロースタート

新しいサービスの負荷を手動で増やす場合は、負荷分散仮想サーバーの増分間隔を指定しないでください。新しいサービスリクエスト率と単位のみを指定してください。間隔が指定されていない場合、アプライアンスは定期的に負荷を増加させません。いずれかのパラメータを手動で変更しない限り、新しいサービスの負荷は、新しいサービスリクエスト率と単位の組み合わせで指定された値に維持されます。たとえば、新しいサービスリクエスト率とユニットパラメータをそれぞれ 25 と「1 秒あたり」に設定した場合、いずれかのパラメータを変更するまで、アプライアンスは新しいサービスの負荷を 1 秒あたり 25 リクエストで維持します。新しいサービスがスロースタートモードを終了し、既存のサービスと同じ数のリクエストを受信するようにするには、新しいサービスリクエスト率パラメータを 0 に設定します。

例として、仮想サーバーを使用して Service1 と Service2 の 2 つのサービスをラウンドロビンモードでロードバランシングしているとします。さらに、仮想サーバーが 1 秒あたり 240 のリクエストを受信し、負荷をサービス全体に均等に分散していると仮定します。Service3 という新しいサービスが構成に追加されたら、負荷のすべてをそのサービスに送信する前に、1 秒あたり 10、20、40 リクエストという値で手動で負荷を増やしたくなる場合があります。次の表は、3 つのパラメータを設定する値を示しています。

表1. パラメータ値

パラメーター
間隔 (秒単位) 0
新規サービスリクエスト率 10、20、40、0 (任意の間隔で)
新しいサービスリクエストレートの単位 1 秒あたりのリクエスト数

新しいサービスリクエスト率パラメータを 0 に設定すると、Service3 は新しいサービスとは見なされなくなり、負荷の全部分を受けます。

Service3の立ち上げ期間中に、Service4という別のサービスを追加すると仮定します。この例では、新しいサービスリクエスト率パラメータが 40 に設定されたときに Service4 が追加されます。そのため、Service4 は 1 秒あたり 40 件のリクエストの受信を開始します。

次の表は、この例で説明されている期間におけるサービスの負荷分散を示しています。

表2. 手動で負荷をステップアップする場合のサービスの負荷分散

  新規サービスリクエストレート = 10 リクエスト/秒 (サービス 3 追加) 新規サービスリクエスト率 = 20 リクエスト/秒 新規サービスリクエストレート = 40 リクエスト/秒 (サービス 4 追加) 新しいサービス要求レート = 0 req/秒 (新しいサービスはスロースタートモードを終了します)
Service1 115 110 80 60
Service2 115 110 80 60
Service3 10 20 40 60
Service4 - - 40 60
合計要件/秒 (仮想サーバーの負荷) 240 240 240 240

自動スロースタート

アプライアンスが新しいサービスの負荷を一定の間隔で自動的に増加させたい場合は、新しいサービスリクエストレートパラメータ、units パラメータ、および増分間隔を設定します。すべてのパラメータが 0 以外の値に設定されている場合、アプライアンスは、指定された間隔で、サービスが負荷の全シェアを受け取るまで、新しいサービスへの負荷を新しいサービスリクエストレートの値だけ増やします。

たとえば、サービス 1、サービス 2、サービス 3、サービス 4 の 4 つのサービスがロードバランシング仮想サーバー vserver1 にバインドされているとします。さらに、vserver1 が 1 秒あたり 100 のリクエストを受信し、その負荷をサービス全体に均等に分散すると仮定します (サービスあたり 1 秒あたり 25 リクエスト)。5 つ目のサービス Service5 を設定に追加すると、アプライアンスが新しいサービスに、最初の 10 秒は 1 秒あたり 4 リクエスト、次の 10 秒間は 1 秒あたり 8 リクエストというように送信し、1 秒あたり 20 リクエストを受信するようにしたい場合があります。この要件について、3 つのパラメータを設定する値を次の表に示します。

表3. パラメータ値

パラメーター
間隔 (秒単位) 10
インクリメント値 4
新しいサービスリクエストレートの単位 1 秒あたりのリクエスト数

この構成では、新しいサービスは、追加されたか、状態が DOWN から UP に変更されてから 50 秒後に、既存のサービスと同じ数のリクエストの受信を開始します。この期間の各間隔の間に、アプライアンスは、段階的に増加しないと新しいサービスに送信されるはずの超過リクエストを既存のサーバーに分散します。たとえば、段階的な増加がない場合、Service5 を含む各サービスは 1 秒あたり 20 件のリクエストを受信することになります。段階的に増分すると、Service5 が 1 秒あたり 4 つの要求しか受信しない最初の 10 秒間に、アプライアンスは 1 秒あたり 16 個を超える要求を既存のサービスに分配します。その結果、50 秒間にわたって次の表と図に示す分散パターンになります。50 秒が経過すると、Service5 は新しいサービスとは見なされなくなり、通常のトラフィックシェアを受け取ります。

表4. Service5 追加直後の 50 秒間の全サービスの負荷分散パターン

  0 秒 10 秒 20 秒 30 秒 40 秒 50 秒
サービス 1 の要求/秒 25 24 23 22 21 20
サービス 2 の要求/秒 25 24 23 22 21 20
サービス 3 の要求/秒 25 24 23 22 21 20
サービス 4 の要求/秒 25 24 23 22 21 20
サービス 5 の要求/秒 0 4 8 12 16 20
合計要件/秒 (仮想サーバーの負荷) 100 100 100 100 100 100

図1:Service5追加直後の50秒間の全サービス負荷分散パターンのグラフ

負荷分布グラフ

別の要件として、アプライアンスが既存のサービスに対する負荷の Service5 25% を、最初の 5 秒間に 50% を、次の 5 秒間に 50% を、1 秒あたり 20 のリクエストを受信するまで送信するということが挙げられます。この要件について、3 つのパラメータを設定する値を次の表に示します。

表5. パラメータ値

パラメーター
間隔 (秒単位) 5
インクリメント値 25
新しいサービスリクエストレートの単位 パーセント

この構成では、サービスは追加されてから 20 秒後、または状態が DOWN から UP に変更されてから 20 秒後に、既存のサービスと同じ数のリクエストの受信を開始します。新サービスの立ち上げ期間中のトラフィック配分は、前述のステップ増加の単位が「1 秒あたりのリクエスト数」だった場合と同じです。

スロースタートパラメーターの設定

スロースタートパラメータは、 set lb vserverまたはadd lb vserverコマンドを使用して設定します。次のコマンドは、仮想サーバーを追加するときにスロースタートパラメータを設定するためのものです。

コマンドラインインターフェイスを使用して新しいサービスの段階的なロードインクリメントを設定するには

コマンドプロンプトで次のコマンドを入力して、サービスの負荷を段階的に増やすように構成し、構成を確認します。

add lb vserver <name> <serviceType> <IPAddress> <port> [-newServiceRequest <positive_integer>] [<newServiceRequestUnit>] [-newServiceRequestIncrementInterval <positive_integer>]

show lb vserver <name>
<!--NeedCopy-->

set lb vserver BR_LB -newServiceRequest 5 PER_SECOND -newServiceRequestIncrementInterval 10
Done

show lb vserver BR_LB
BR_LB (192.0.2.33:80) - HTTP Type: ADDRESS
State: UP
...
...
New Service Startup Request Rate: 5 PER_SECOND, Increment Interval: 10
...
...
Done
<!--NeedCopy-->

構成ユーティリティを使用して新しいサービスの段階的なロードインクリメントを設定するには

  1. [ トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、仮想サーバーを開きます。
  2. [詳細設定] で [方法] を選択し、次のスロースタートパラメータを設定します。
    • 新規サービス起動リクエスト率
    • 新しいサービスリクエストユニット。
    • インクリメント間隔。
仮想サーバレベルの低速スタートにより、新しいサービスの負荷を段階的にステップアップ