Citrix ADC

再試行をリクエスト

バックエンドサーバーがTCP接続をリセットすると、要求の再試行機能は、リセットをクライアントに送信する代わりに、次に使用可能なサーバーに要求を転送します。リロードバランシングを実行すると、アプライアンスが次の利用可能なサービスに対して同じ要求を開始すると、クライアントは RTT を保存します。

要求の再試行機能は、次のエラーシナリオに適用できます。

  • アプライアンスが要求データパケットを送信すると、バックエンドサーバーはTCP接続をリセットします。
  • バックエンドサーバーがSYNの確立時にTCP接続をリセットした場合

バックエンドサーバーが要求データパケットの受信時にTCP接続をリセットするときの要求の再試行のしくみ

次の図は、コンポーネントがどのように相互作用するかを示しています。

リクエストの再試行の仕組み

  1. このプロセスは、アプライアンスで AppQoE 機能を有効にすることから始まります。
  2. クライアントがHTTPまたはHTTPS要求を送信すると、負荷分散仮想サーバーはその要求をバックエンドサーバーに送信します。
  3. 要求されたサービスが利用できない場合、バックエンドサーバーはTCP接続をリセットします。
  4. AppQoE 構成で「再試行」が有効になっていて、希望する再試行回数が指定されている場合、負荷分散仮想サーバーは構成された負荷分散アルゴリズムを使用して、次の使用可能なアプリケーションサーバーに要求を転送します。
  5. 負荷分散仮想サーバーが応答を受信した後、アプライアンスは応答をクライアントに転送します。
  6. 使用可能なバックエンドサーバーが再試行回数以下で、すべてのサーバーがリセットを送信すると、アプライアンスは内部サーバーエラーを 500 個応答します。使用可能なサーバーが5つあり、再試行回数が6に設定されているシナリオを考えてみます。5 台のサーバすべてが接続をリセットすると、アプライアンスはクライアントに 500 の内部サーバエラーを返します。
  7. 同様に、バックエンドサーバーの数がリトライ回数を超え、バックエンドサーバーが接続をリセットすると、アプライアンスはリセットをクライアントに転送します。3つのバックエンドサーバーがあり、再試行回数が2に設定されているシナリオを考えてみます。3 台のサーバで接続をリセットすると、アプライアンスはクライアントにリセット応答を送信します。

バックエンドサーバーが SYN 確立時に TCP 接続をリセットした場合の要求の再試行の仕組み

次の図は、コンポーネント同士が相互作用することを示しています。

リクエストの再試行の仕組み

  1. このプロセスは、アプライアンスで AppQoE 機能を有効にすることから始まります。
  2. クライアントが HTTP または HTTPS 要求を送信すると、負荷分散仮想サーバーはバックエンドサーバーへの接続を開始します。
  3. 要求されたサービスが TCP SYN 確立で使用できない場合、バックエンドサーバーは TCP 接続をリセットします。
  4. AppQoE 構成で「再試行」が有効になっていて、希望する再試行回数が指定されている場合、負荷分散仮想サーバーは構成された負荷分散アルゴリズムを使用して、次の使用可能なアプリケーションサーバーに要求を転送します。
  5. 負荷分散仮想サーバーが応答を受信した後、アプライアンスは応答をクライアントに転送します。
  6. 使用可能なバックエンドサーバーが再試行回数以下で、すべてのサーバーがリセットを送信すると、アプライアンスは内部サーバーエラーを 500 回応答します。使用可能なサーバーが5つあり、再試行回数が6に設定されているシナリオを考えてみます。5 台のサーバすべてが接続をリセットすると、アプライアンスはクライアントに 500 の内部サーバエラーを返します。
  7. 同様に、バックエンドサーバーの数がリトライ回数を超え、バックエンドサーバーが TCP SYN 確立上の接続をリセットした場合、アプライアンスはリセットをクライアントに転送します。3つのバックエンドサーバーがあり、再試行回数が2に設定されているシナリオを考えてみます。3 台のサーバが接続をリセットすると、アプライアンスはリセットパケットをクライアントに送信します。

GETメソッドの要求再試行を構成します

GET メソッドの再試行機能を設定するには、次の手順を実行する必要があります。

  1. AppQoEを有効にする
  2. AppQoEアクションの追加
  3. AppQoEポリシーの追加
  4. 負荷分散仮想サーバーをAppQoEポリシーにバインドする

AppQoEを有効にする

コマンドプロンプトで入力します。 enable ns feature appqoe

AppQoEアクションの追加

AppQoEアクションを構成して、TCPリセット後にアプライアンスを再試行するかどうかと再試行の回数を指定する必要があります。

add appqoe action reset_action -retryOnReset ( YES | NO ) -numretries <positive_integer>]

例:

add appqoe action reset_action –retryOnReset YES –numretries 5

RetryonReset バックエンドサーバーがTCP接続をリセットした場合は、再試行を有効にします。 numretries。再試行回数。

AppQoEポリシーの追加

AppQoE を実装するには、AppQoE ポリシーを設定して、特定のキューの受信 HTTP または SSL リクエストに優先順位を付ける必要があります。

コマンドプロンプトで入力します。

add appqoe policy <name> -rule <expression> -action <string>

例:

add AppQoE policy reset_policy -rule http.req.method.eq(get) -action reset_action

負荷分散仮想サーバーをAppQoEポリシーにバインドする

バックエンドサーバーがTCPパケット要求をリセットし、負荷分散仮想サーバーがその要求を次に利用可能なサービスに転送するようにする場合は、負荷分散仮想サーバーをAppQoEポリシーにバインドする必要があります。

コマンドプロンプトで入力します。

bind lb vserver <name> ((<serviceName> (-policyName <string> [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )]

例:

bind lb vserver v1 -policyName reset_policy -type REQUEST -priority 1

POST要求の要求再試行を構成します

バックエンドサーバーにデータを書き込むバランスリクエストをリロードするときは、常に注意を払う必要があります。このようなリクエストの場合は、コンテンツの長さが短いことを確認してください。コンテンツの長さが長いと、リソースが消費される可能性があります。以下の手順に従って、POST要求のリロードバランシングを構成します。

  1. AppQoEを有効にする
  2. AppQoEアクションの追加
  3. AppQoEポリシーの追加
  4. 負荷分散仮想サーバーをAppQoEポリシーにバインドする

AppQoEを有効にする

コマンドプロンプトで入力します。

enable ns feature appqoe

AppQoEアクションの追加

TCPリセットと再試行回数の後に再試行するには、AppQoEアクションを追加する必要があります。

add appqoe action reset_action -retryOnReset ( YES | NO ) -numretries <positive_integer>]

例:

add AppQoE action reset_action –retryOnReset YES –numretries 5

AppQoEポリシーの追加

AppQoE を実装するには、AppQoE ポリシーを構成して、特定のキューに接続をキューに入れる方法を定義する必要があります。

コマンドプロンプトで入力します。

add appqoe policy <name> -rule <expression> -action <string>

例:

add appqoe policy reset_policy -rule HTTP.REQ.CONTENT_LENGTH.le(2000) -action reset_action

注:

コンテンツの長さが2000未満の場合、要求の再試行機能を制限する場合は、この構成を使用できます。

負荷分散仮想サーバーをAppQoEポリシーにバインドする

バックエンドサーバーがTCPパケット要求をリセットし、負荷分散仮想サーバーが特定のキューを介して次に利用可能なサービスに要求を転送するようにする場合は、負荷分散仮想サーバーをAppQoEポリシーにバインドする必要があります。

コマンドプロンプトで入力します。

bind lb vserver <name> ((<serviceName> (-policyName <string> [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )]

例: bind lb vserver v1 -policyName reset_policy -type REQUEST -priority 1

Citrix ADC GUIを使用して、要求の再試行のためにAppQoEポリシーを構成します

  1. AppExpert > AppQoE > ポリシーに移動します
  2. [ AppQoEポリシー ] ページで、[ 追加] をクリックします。
  3. [ AppQoEポリシー の作成]ページで、次のパラメーターを設定します。

  4. [作成]して[閉じる] をクリックします。

    リクエストの再試行またはリロードバランシングのAppQoEポリシー

Citrix ADC GUIを使用して、要求の再試行バランシング用のAppQoEアクションを構成します

  1. AppExpert > AppQoE > アクションに移動します
  2. [ AppQoEアクション ]ページで、[ 追加]をクリックします。
  3. [ AppQoEアクション の作成]ページで、TCPリセット時に再試行するための次のパラメーターを設定します。 a。 TCPリセットを再試行します。TCP リセットの再試行アクションを有効にするには、このチェックボックスをオンにします。 b。 再試行回数。再試行回数を入力します。
  4. [作成]して[閉じる] をクリックします。

    リクエストの再試行バランシング用にAppQoEアクションを構成します

TCP SYNの確立時にバックエンドサーバーがリセットされたときに、GETメソッドの要求の再試行を構成します

CLI および GUI の設定は、GET メソッドのステップと同様です。詳細については、「 GET メソッドのリクエスト試行を設定する 」セクションを参照してください。バックエンドサーバーが接続をリセットしたとき。