HTTP 要求が失敗するか、ユーザーが指定したエラー コードに属するエラー コードを返すと、コントローラはこれらのエラー メッセージをクライアントに転送します。このような要求を再試行するように NSX Advanced Load Balancer を構成できます。

構成可能なオプション

HTTP サーバの再選択はデフォルトで無効になっています。この機能は、個々のプール内で構成できます。オプションで、この機能をトリガするエラー コードを選択できます。この機能を有効にすると、すべての接続または SSH 障害シナリオで機能します。

エラー コード

プール構成では、サーバの再選択を必要とする HTTP エラー応答コードを指定します。エラー コードは、次のいずれかの方法で指定できます。

  • 明示的なコード番号

1 つ以上の個別のエラー コード(例:404)を入力します。

  • コードの範囲

400 ~ 499 または 500 ~ 599(例:501-503)の範囲を入力します。

  • コードのブロック全体

4xx または 5xx(例:4xx)。

最大再試行回数

デフォルトの最大再試行回数の設定は 4 です。最初のエラー応答に続いて、NSX Advanced Load Balancer は要求を最大 4 回プールに再送信します。つまり、総試行回数は 5 回です。再送信される各要求は異なるサーバに送信され、各サーバは 1 回のみ要求を受信できます。

最大再試行回数の設定がプール内で有効になっている実行中のサーバの数よりも大きい場合でも、これらの各サーバは 1 回のみ要求を受信します。たとえば、最大再試行回数が 4 に設定されているが、プールにサーバが 3 台しかない場合、最大再試行回数は 2 回だけです。いずれかのサーバへの最初の要求送信が失敗すると、残りの 2 台のサーバへの要求送信が試行されます。2 番目のサーバも要求に応答して 4xx または 5xx エラー コードを送信すると、要求はプール内の最後のサーバに送信されます。最後のサーバも 4xx または 5xx を送信すると、サーバからの応答がクライアントに返されます。

サーバ再試行のタイムアウト

srv_retry_timeout 変数は、NSX Advanced Load Balancer REST API または CLI を使用して設定できます。srv_retry_timeout 変数の設定を有効にするには、server_reselect.enabledTrue に設定されていることを確認します。タイムアウト範囲は 0 ~ 3,600,000 ミリ秒(60 分)です。値が 0 の場合、タイムアウトはデフォルトの接続タイムアウト値になります。

べき等要求に対するサーバの再選択

HTTP サーバの再選択はべき等要求メソッドにのみ適用されます。これは、サーバが同一の要求を複数回受信した場合でも、このタイプの特定の要求の結果は常に同じであるためです。べき等でない要求メソッド(POST、LOCK、PATCH、CONNECT)の複数の同一要求は定義上、そのような単一の要求の場合と同じ効果を持つことが保証されません。したがって、これらの要求メソッドに対して HTTP サーバの再選択は実行されません。

HTTP サーバの再選択の構成

HTTP サーバの再選択は、プール構成の [詳細] タブで有効にできます。

  1. [アプリケーション] > [プール] の順に移動します。

  2. プールの構成ポップアップを開きます。

    1. 既存のプールでこの機能を有効にする場合は、プールの [編集] アイコンをクリックします。

    2. 新しいプールを作成するには、[プールの作成] をクリックし、クラウド名を選択して [次へ] をクリックします。[設定] タブでプールの名前を入力し、[サーバ] タブでサーバを選択します。

  3. [詳細] タブをクリックします。

  4. [HTTP サーバの再選択] チェックボックスを選択します。

  5. サーバの再選択をトリガするエラー応答コードを入力します。

  6. 変更を保存します。

    1. 新しいプールを作成する場合は、[次へ] をクリックして設定を確認し、[保存] をクリックします。

    2. 既存のプールを編集する場合は、[保存] をクリックします。

次の例では、すべての 4xx エラー コードに対して HTTP サーバの再選択を有効にします。



この構成に基づいて、このプール内のあるサーバが 4xx エラー コードを使用してクライアント要求に応答すると、NSX Advanced Load Balancer はプール内の別のサーバに要求を送信することで、要求送信を再試行します。再試行プロセスは 4 台の異なるサーバに対して最大 4 回発生します。

CLI の例

注:

次の例には、CLI 出力の重要な行のみが含まれています。

[admin:10-10-27-18]: > configure pool vs-test-pool
Updating an existing object. Currently, the object is:
+---------------------------------------+------------------------------------------------+
| Field                                 | Value                                          |
+---------------------------------------+------------------------------------------------+
| uuid                                  | pool-8e91b1a6-17bf-490e-b59a-05efd942a3f6      |
| name                                  | vs-test-pool                                   |
.                                                                                        .
.                                                                                        .
.                                                                                        .
| server_reselect                       |                                                |
|   enabled                             | False                                          |
|   num_retries                         | 4                                              |
|   retry_nonidempotent                 | False                                          |
|   srv_retry_timeout                   | 0 milliseconds                                 |
.                                                                                        .
.                                                                                        .
.                                                                                        .
+---------------------------------------+------------------------------------------------+                                                           
[admin:10-10-27-18]: pool> server_reselect enabled
[admin:10-10-27-18]: pool:server_reselect> srv_retry_timeout 5000
Overwriting the previously entered value for srv_retry_timeout
[admin:10-10-27-18]: pool:server_reselect> save
[admin:10-10-27-18]: pool> exit
+---------------------------------------+------------------------------------------------+
| Field                                 | Value                                          |
+---------------------------------------+------------------------------------------------+
| uuid                                  | pool-8e91b1a6-17bf-490e-b59a-05efd942a3f6      |
| name                                  | vs-test-pool                                   |
.                                                                                        .
.                                                                                        .
.                                                                                        .
| server_reselect                       |                                                |
|   enabled                             | True                                           |
|   num_retries                         | 4                                              |
|   retry_nonidempotent                 | False                                          |
|   srv_retry_timeout                   | 5000 milliseconds                              |
.                                                                                        .
.                                                                                        .
.                                                                                        .
+---------------------------------------+------------------------------------------------+

[admin:10-10-27-18]: > configure pool vs-test-pool server_reselect
[admin:10-10-27-18]: pool:server_reselect> no enabled
+---------------------+-------------------+
| Field               | Value             |
+---------------------+-------------------+
| enabled             | False             |
| num_retries         | 4                 |
| retry_nonidempotent | False             |
| srv_retry_timeout   | 5000 milliseconds |
+---------------------+-------------------+
[admin:10-10-27-18]: pool:server_reselect> srv_retry_timeout 0
Overwriting the previously entered value for srv_retry_timeout
[admin:10-10-27-18]: pool:server_reselect> save
[admin:10-10-27-18]: pool> save
+---------------------------------------+------------------------------------------------+
| Field                                 | Value                                          |
+---------------------------------------+------------------------------------------------+
| uuid                                  | pool-8e91b1a6-17bf-490e-b59a-05efd942a3f6      |
| name                                  | vs-test-pool                                   |
.                                                                                        .
.                                                                                        .
.                                                                                        .
| server_reselect                       |                                                |
|   enabled                             | False                                          |
|   num_retries                         | 4                                              |
|   retry_nonidempotent                 | False                                          |
|   srv_retry_timeout                   | 0 milliseconds                                 |
.                                                                                        .
.                                                                                        .
.                                                                                        .
+---------------------------------------+------------------------------------------------+
[admin:10-10-27-18]: >