Citrix ADC

スピルオーバーの構成

アプライアンスのスピルオーバー構成は、スピルオーバー方式、スピルオーバーしきい値、およびバックアップ仮想サーバで構成されるプライマリ仮想サーバで構成されます。バックアップ仮想サーバーをスピルオーバー用に構成して、バックアップ仮想サーバーのチェーンを作成することもできます。

スピルオーバー方式では、スピルオーバー構成のベースとなる動作条件(確立された接続の数、帯域幅、またはサーバファームの健全性の組み合わせなど)を指定します。新しい接続が到着すると、アプライアンスはプライマリ仮想サーバがアップしていることを確認し、動作状態と設定されたスピルオーバーしきい値を比較します。しきい値に達すると、スピルオーバー機能は、新しい接続をバックアップチェーン内の最初に使用可能な仮想サーバに誘導します。バックアップ仮想サーバは、プライマリの負荷がしきい値を下回るまで、受信する接続を管理します。

スピルオーバー永続性を設定すると、プライマリの負荷がしきい値を下回った後でも、バックアップ仮想サーバは受信した接続を処理し続けます。スピルオーバーパーシステンスとスピルオーバーパーシステンスのタイムアウトを設定すると、プライマリへの負荷がしきい値を下回った後、指定した期間だけバックアップ仮想サーバで接続を処理します。

注意: 通常、スピルオーバー方式に関連付けられた値がしきい値(接続数など)を超えた場合、スピルオーバーがトリガーされます。ただし、server-health スピルオーバー方式では、サーバファームの正常性がしきい値を下回ると、スピルオーバーがトリガーされます。

次のいずれかの方法でスピルオーバーを設定できます。

  • 定義済みのスピルオーバー方法を指定します。4 つの定義済みメソッドが利用可能で、一般的なスピルオーバー要件を満たします。
  • ポリシーベースのスピルオーバーを構成します。ポリシーベースのスピルオーバーでは、Citrix ADCルールを使用して、スピルオーバーが発生する条件を指定します。Citrix ADCルールを使用すると、さまざまな動作条件に合わせてスピルオーバーを柔軟に設定できます。

定義済みのメソッドが要件を満たしていない場合は、ポリシーベースのスピルオーバーを使用します。プライマリ仮想サーバの両方を構成する場合、ポリシーベースのスピルオーバー構成は、事前定義された方法よりも優先されます。

まず、バックアップチェーンに必要なプライマリ仮想サーバーと仮想サーバーを作成します。バックアップチェーンを設定するには、1 つの仮想サーバーをプライマリのバックアップとして指定し (つまり、セカンダリ仮想サーバーを作成する)、セカンダリのバックアップとして仮想サーバーを指定する (第 3 の仮想サーバーを作成する) などを指定します。次に、定義済みのスピルオーバー方法を指定するか、スピルオーバーポリシーを作成してバインドすることによって、スピルオーバーを構成します。

仮想サーバを別の仮想サーバのバックアップとして割り当てる手順については、バックアップロードバランシング仮想サーバの構成を参照してください。

定義済みのスピルオーバーメソッドの構成

定義済みのスピルオーバーメソッドは、より一般的なスピルオーバー要件を満たすものです。定義済みのスピルオーバー方法の 1 つを使用するには、プライマリ仮想サーバーでスピルオーバーパラメーターを構成します。バックアップ仮想サーバのチェーンを作成するには、バックアップ仮想サーバのスピルオーバーパラメータも構成します。

バックアップ仮想サーバーが独自のしきい値に達し、サービスタイプがTCPの場合、Citrix ADCアプライアンスはクライアントにTCPリセットを送信します。サービスタイプが HTTP、SSL、および RTSP の場合、プライマリ仮想サーバに設定されたリダイレクト URL に新しい要求が転送されます。リダイレクト URL は、HTTP、SSL、および RTSP 仮想サーバに対してのみ指定できます。リダイレクトURLが構成されていない場合、Citrix ADCアプライアンスはクライアントにTCPリセット(仮想サーバーのタイプがTCPの場合)またはHTTP 503応答(仮想サーバーのタイプがHTTPまたはSSLの場合)を送信します。

:RTSP仮想サーバーでは、Citrix ADCアプライアンスはスピルオーバーにデータ接続のみを使用します。バックアップ RTSP 仮想サーバが使用できない場合、要求は RTSP URL にリダイレクトされ、RTSP リダイレクトメッセージがクライアントに送信されます。

コマンドラインインターフェイスを使用して仮想サーバーの定義済みのスピルオーバー方法を構成するには

コマンドプロンプトで、次のように入力します。

set lb vserver <vServerName> -soMethod <spillOverType> -soThreshold <positiveInteger> -soPersistence ENABLED -soPersistenceTimeout <positiveInteger>

set lb vserver Vserver-LB-1 -soMethod Connection -soThreshold 1000 -soPersistence enabled -soPersistenceTimeout 2

構成ユーティリティを使用して仮想サーバーの定義済みのスピルオーバー方法を構成するには

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、仮想サーバーを開きます。
  2. [詳細設定] で、[保護] をクリックし、スピルオーバーパラメータを設定します。

ポリシーベースのスピルオーバーの構成

ルール(式)に基づくスピルオーバーポリシーを使用すると、より広範なスピルオーバーシナリオに合わせてアプライアンスを設定できます。たとえば、仮想サーバーの応答時間に基づいて、または仮想サーバーのサージキュー内の接続数に基づいて、スピルオーバーを構成できます。

ポリシーベースのスピルオーバーを設定するには、まずスピルオーバーアクションを作成します。次に、スピルオーバーポリシーで使用する式を選択し、ポリシーを設定し、アクションをその式に関連付けます。最後に、スピルオーバーポリシーを負荷分散、コンテンツスイッチング、またはグローバルサーバーの負荷分散仮想サーバーにバインドします。複数のスピルオーバーポリシーを 1 つの仮想サーバに、プライオリティ番号でバインドできます。アプライアンスは、スピルオーバーポリシーをプライオリティ番号の昇順に評価し、TRUE と評価される最後のポリシーに関連付けられたアクションを実行します。

仮想サーバには、バックアップアクションを設定することもできます。バックアップ操作は、仮想サーバに1つ以上のバックアップ仮想サーバがない場合、またはすべてのバックアップ仮想サーバがダウンしているか、無効になっているか、独自のスピルオーバー制限に達している場合に実行されます。

スピルオーバーポリシーによって UNDEF 条件 (ポリシー評価の結果が未定義の場合にスローされる例外) が発生すると、UNDEF アクションが実行されます。UNDEF アクションは、常に ACCEPT アクションです。選択した UNDEF アクションを指定することはできません。

スピルオーバーアクションの設定

スピルオーバーアクションは、関連付けられているスピルオーバーポリシーが TRUE と評価されたときに実行されます。現在、スピルオーバーアクションは SPILLOVER のみサポートされています。

コマンドラインインターフェイスを使用してポリシーベースのスピルオーバーを構成するには

コマンドプロンプトで次のコマンドを入力して、スピルオーバーポリシーを構成し、構成を確認します。

add spillover action <name> -action SPILLOVER

show spillover action <name>
add spillover action mySoAction -action SPILLOVER
Done
show spillover action mySoAction
1) Name: mySoAction Action: SPILLOVER
Done

スピルオーバーポリシーの式の選択

ポリシー式では、ブール値を返す任意の仮想サーバベースの式を使用できます。たとえば、次のいずれかの式を使用できます。

SYS.VSERVER("vserver").RESPTIME.GT(<int>)
SYS.VSERVER("vserver").STATE.EQ(“<string>”), and
SYS.VSERVER("vserver").THROUGHPUT.LT    (<int>)

RESPTIME、STATE、THROUGHPUT などの既存の機能に加えて、この機能で導入された次の仮想サーバベースの機能を使用できます。

Averagesurgecount

アクティブなサービスのサージキューにあるリクエストの平均数を返します。アクティブなサービスがない場合は 0 (ゼロ) を返します。コンテンツスイッチングまたはグローバルサーバーの負荷分散仮想サーバーで使用すると、UNDEF 条件が発生します。

Activeservices

アクティブなサービスの数を返します。コンテンツスイッチングまたはグローバルサーバーの負荷分散仮想サーバーで使用すると、UNDEF 条件が発生します。

Activetransactions

現在のアクティブなトランザクションの仮想サーバーレベルのカウンタの値を返します。

is_dynamic_limit_reached

仮想サーバーが管理する接続の数が動的に計算されたしきい値と等しい場合は、ブール型 TRUE を返します。動的しきい値は、UPしているバインドされたサービスの最大クライアント(Max Clients)設定の合計です。

ポリシー式を使用して、事前定義された任意のスピルオーバーメソッドを実装できます。次の表は、定義済みのスピルオーバーメソッドを、それらを実装するために使用できる式にマップします。

表1. 定義済みのスピルオーバーメソッドをポリシー式に変換する

定義済みのスピルオーバー方法 対応する式
CONNECTION SYS.VSERVER(“<vserver-name>”).CONNECTIONS, used with the GT(int) arithmetic function.
帯域幅 SYS.VSERVER(“<vserver-name>”).THROUGHPUT, used with the GT(int) arithmetic function.
HEALTH SYS.VSERVER(“<vserver-name>”).HEALTH, used with the LT(int) arithmetic function.
DYNAMICCONNECTION SYS.VSERVER(“<vserver-name>”).IS_DYNAMIC_LIMIT_REACHED : IS_DYNAMIC_LIMIT_REACHED 関数を使用してポリシーベースのスピルオーバーを実装する場合は、仮想サーバーに対して事前定義されたDYNAMICCONNECTION メソッドも構成する必要があります。スピルオーバーが機能するために必要な統計情報が収集されます。

スピルオーバーポリシーの設定

スピルオーバーポリシーは、ブール式をルールとして使用して、スピルオーバーが発生するために満たす必要がある条件を指定します。

コマンドラインインターフェイスを使用してスピルオーバーポリシーを構成するには

コマンドプロンプトで次のコマンドを入力して、スピルオーバーポリシーを構成し、構成を確認します。

add spillover policy <name> -rule <expression> -action <string> [-comment <string>]

show spillover policy <name>
> add spillover policy mySoPolicy -rule SYS.VSERVER("v1").RESPTIME.GT(50) -action mySoAction -comment "Triggers spillover when the vserver's response time is greater than 50 ms."
Done

> show spillover policy mySoPolicy

1)  Name: mySoPolicy Rule: "SYS.VSERVER("v1").RESPTIME.GT(50)" Action: mySoAction Hits: 0 ActivePolicy: 0
Comment: "Triggers spillover when the vserver's response time is greater than 50 ms."
Done
>

仮想サーバーへのスピルオーバーポリシーのバインド

スピルオーバーポリシーは、負荷分散、コンテンツスイッチング、またはグローバルサーバーの負荷分散仮想サーバーにバインドできます)。評価のフローを制御する Goto 式を使用して、複数のポリシーを仮想サーバにバインドできます。

コマンドラインインターフェイスを使用してスピルオーバーポリシーを仮想サーバーにバインドするには

コマンドプロンプトで次のコマンドを入力して、スピルオーバーポリシーを負荷分散、コンテンツスイッチング、またはグローバルサーバーの負荷分散仮想サーバーにバインドし、構成を確認します。

bind (lb | cs | gslb) vserver <name> -policyName <string> -priority <positive_integer> [-gotoPriorityExpression <expression>]

show (lb | cs | gslb) vserver <name>
> bind lb vserver vserver1 -policyName mySoPolicy -priority 5
Done
> show lb vserver vserver1
vserver1 (2.2.2.12:80) - HTTP Type: ADDRESS
. . .

1)  Spillover Policy Name: mySoPolicy Priority: 5
GotoPriority Expression: END
Flowtype: REQUEST
Done
>

スピルオーバーイベントのバックアップアクションの設定

バックアップアクションでは、スピルオーバーしきい値に達したが、1 つ以上のバックアップ仮想サービスが設定されていないか、ダウン、無効、または独自のしきい値に達した場合の処理を指定します。

注:仮想サーバー上で直接構成される定義済みのスピルオーバーメソッドの場合 (「スピルオーバーメソッド」パラメーターの値として)、バックアップアクションは構成できません。デフォルトでは、アプライアンスはクライアントにTCPリセット(仮想サーバのタイプがTCPの場合)またはHTTP 503応答(仮想サーバのタイプがHTTPまたはSSLの場合)を送信します。

バックアップアクションは、仮想サーバ上で構成されます。仮想サーバは、(ポリシーで指定されたしきい値に達した後)要求を受け入れる、クライアントを URL にリダイレクトする、または要求の数がしきい値を下回るまで TCP または SSL 接続を確立する前に要求を単にドロップするように設定できます。したがって、データ構造を割り当てる前でも接続がリセットされるため、より少ないメモリリソースが利用されます。

CLI を使用してスピルオーバーのバックアップアクションを設定するには

コマンドプロンプトで次のコマンドを入力して、バックアップアクションを構成し、構成を確認します。

set lb vserver <name> -soBackupAction <soBackupAction>

show lb vserver <name>

set lb vserver vs1 -soBackupAction REDIRECT -redirectURL http://www.mysite.com/maintenance Done show lb vserver vs1 vs1 (10.102.29.76:80) - HTTP Type: ADDRESS State: UP . . . Redirect URL: http://www.mysite.com/maintenance . . . Done

GUI を使用してスピルオーバーのバックアップアクションを構成するには

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、仮想サーバーを開きます。
  2. [詳細設定] で、[保護] をクリックし、スピルオーバーバックアップ操作を指定します。

スピルオーバーの構成