Citrix ADC

バックエンドサーバーの応答がタイムアウトした場合は、再試行を要求します

リクエストの再試行は、バックエンドサーバーがリクエストに応答するのに時間がかかる場合、アプライアンスがタイムアウト時に再ロードバランシングを実行し、次に利用可能なサーバーにリクエストを転送するもう1つのシナリオで使用できます。

バックエンドサーバーの応答がタイムアウトした場合の要求の再試行のしくみ

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

バックエンドサーバーの応答がタイムアウトした場合の要求の再試行のしくみ

  1. プロセスは、アプライアンスでappqoe機能を有効にすることから始まります。
  2. appqoe構成には、ミリ秒単位の「retryOnTimeout」パラメーターがあります。
  3. アプライアンスが要求を送信し、サーバーが応答するのにさらに時間がかかる場合、アプライアンスは構成されたタイムアウト 値に基づいて再負荷分散を実行します。アプライアンスは接続をリセットし、別のサービスを選択して、サーバーの応答を待つ代わりに要求を転送します。
  4. 負荷分散仮想サーバーが応答を受信した後、アプライアンスは応答をクライアントに転送します。タイムアウトパラメータを使用すると、アプライアンスはサーバーの応答を待機し続けることができなくなり、RTTが増加します。
  5. 使用可能なバックエンドサーバーが再試行回数以下であり、すべてのサーバーが要求に対してタイムアウト した場合、アプライアンスは500内部サーバーエラーに応答します。使用可能なサーバーが5つあり、再試行回数が6に設定されているシナリオを考えてみます。5つのサーバーすべてが要求に対してタイムアウトした場合、アプライアンスは500の内部サーバーエラーをクライアントに返します。
  6. 同様に、バックエンドサーバーの数が再試行回数を超え、バックエンドサーバーが要求に応じてタイムアウトした場合、アプライアンスは、サーバーが応答を送信するか、クライアントのアイドル接続がタイムアウトするまで、最後のサービスを待機し続けます。3つのバックエンドサーバーがあり、再試行回数が2に設定されているシナリオを考えてみます。3つのサーバーすべてが要求に応じてタイムアウトした場合、アプライアンスは、サーバーが応答を送信するか、クライアントのアイドル接続がタイムアウトするまで、3番目のサービスを待機し続けます。

バックエンドサーバーの応答がタイムアウトした場合のリクエストの再試行(GETおよびPOSTメソッド)を構成する

タイムアウト時にGETメソッドの要求再試行を構成するには、次の手順を完了する必要があります。

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

注:

タイムアウト時の要求の再試行シナリオは、POSTメソッドにも適用できます。

appqoeを有効にする

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

enable ns feature appqoe

タイムアウトのappqoeアクションを追加します

タイムアウト時に再試行するようにappqoeアクションを構成し、再試行の回数を定義する必要があります。

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

add appqoe action <name> -retryOnTimeout <msecs> -numRetries <positive_integer>

例:

add appqoe action appact1 -retryOnTimeout 35 –numRetries 5

appqoeポリシーを追加する

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

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

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

例:

add appqoe policy timeout_policy -rule http.req.method.eq(get) -action appact1

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

バックエンドサーバーの応答に時間がかかり、負荷分散仮想サーバーが要求を次に利用可能なサービスに転送するようにする場合は、appqoeポリシーを分散仮想サーバーにバインドする必要があります。

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

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

例:

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

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

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

    a. 名前。AppQoEポリシー名 b。 アクション。アクションを追加または編集します。新しいアクションを作成するには、「AppQoEアクションの作成」セクションを参照してください。 c. 式。「http.req.method.eq(get)」ポリシー式を選択または入力します。

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

サーバー応答タイムアウトを再ロードバランシングするためのappqoeポリシーを構成します

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

  1. AppExpert > AppQoE > Actionに移動します。
  2. [AppQoEアクション]ページで、[追加]をクリックします。
  3. [AppQoEアクション の作成]ページで、バックエンドサーバーの応答タイムアウト時に再試行するための次のパラメーターを設定します。 a。タイムアウトで再試行します。バックエンドサーバーにリクエストを送信すると、リクエストのタイムアウト(ミリ秒単位)で再試行します。
  4. [作成]して[閉じる] をクリックします。

バックエンドサーバーの応答タイムアウトの要求再試行のためのAppQoEアクションを構成し、

バックエンドサーバーの応答がタイムアウトした場合は、再試行を要求します