Citrix ADC

スピルオーバーの構成

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

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

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

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

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

  • 定義済みのスピルオーバー方法を指定します。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>
<!--NeedCopy-->

set lb vserver Vserver-LB-1 -soMethod Connection -soThreshold 1000 -soPersistence enabled -soPersistenceTimeout 2
<!--NeedCopy-->

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

  1. Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
  2. [詳細設定] で、[保護] をクリックし、スピルオーバーパラメータを設定します。

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

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

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

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

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

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

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

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

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

add spillover action <name> -action SPILLOVER

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

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

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

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

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

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

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

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

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

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

show (lb | cs | gslb) vserver <name>
<!--NeedCopy-->
> 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
>
<!--NeedCopy-->

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

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

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

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

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

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

set lb vserver <name> -soBackupAction <soBackupAction>

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

例:

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

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

  1. Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
  2. [詳細設定] で、[保護] をクリックし、スピルオーバーバックアップ操作を指定します。
スピルオーバーの構成