Message Processor への接続を再試行するように Router を構成する

Edge for Private Cloud バージョン 4.17.05

ヘルスチェックで Message Processor が使用できない場合の Router レスポンスを構成する

Router は 5 秒ごとに Message Processor のヘルスチェックを行い、Message Processor がリクエストを処理できるかどうか確認します。Message Processor が停止すると、Router は自動的にリクエストを別の Message Processor に転送します。

Router に conf_load_balancing_load.balancing.driver.nginx.server.retry プロパティを設定すると、Message Processor が停止したときに Router がどう対応するかを構成できます。このプロパティは、スペースで区切られた一連の値を受け取ります。

  • off: 再試行を無効にすると、Router はリクエストに対してエラーコードを返します。
  • http_599: (デフォルト)Router が Message Processor から HTTP 599 レスポンスを受信すると、Router は次回の Message Processor にリクエストを転送します。

    HTTP 599 は、Message Processor のシャットダウン時に生成される特別なレスポンス コードです。Message Processor は既存のリクエストをすべて完了しようとしますが、新しいリクエストがある場合は HTTP 599 で応答し、次の Message Processor でリクエストを再試行するよう Router に通知します。
  • error: Message Processor との接続を確立中、リクエストの受け渡し中、またはレスポンス ヘッダーからの読み取り中にエラーが発生した場合、Router はリクエストを次の Message Processor に転送します。
  • timeout: Message Processor との接続を確立中、リクエストの受け渡し中、またはレスポンス ヘッダーの読み取り中にタイムアウトが発生した場合、Router はリクエストを次の Message Processor に転送します。
  • invalid_header: Message Processor が空または無効なレスポンスを返した場合、Router はリクエストを次の Message Processor に転送します。
  • http_XXX: Message Processor が HTTP コード XXX のレスポンスを返した場合、Router はリクエストを次の Message Processor に転送します。

Router を構成するには:

  1. /opt/apigee/customer/application/router.properties ファイルを編集します(このファイルが存在しない場合は作成します)。
  2. 次のように conf_load_balancing_load.balancing.driver.nginx.server.retry プロパティを追加します。
    conf_load_balancing_load.balancing.driver.nginx.server.retry=http_599 error
  3. プロパティ ファイルの所有者を「apigee」ユーザーにします。
    > chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. Router を再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-router restart

API プロキシ リクエストの一部として Message Processor にアクセスするときの Router のタイムアウトの構成

Edge Router では、API プロキシを介してリクエストを処理する際に Message Processor にアクセスしようとしたときに、57 秒のタイムアウトが事前に設定されています。このタイムアウト時間が経過すると、別の Message Processor が使用可能な場合、Router は接続を試みます。それ以外の場合はエラーが返されます。

このタイムアウトを制御するには、次の 2 つのプロパティを使用します。

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout には、単一の Message Processor の待機時間を秒単位で指定します。デフォルト値は 57 秒です。
  • conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout は、Edge に複数の Message Processor がある場合に、すべての Message Processor の合計待機時間を秒単位で指定します。conf_load_balancing_load.balancing.driver.proxy.read.timeout の現在の値(57 秒)のデフォルト値になります。

Router を構成するには:

  1. /opt/apigee/customer/application/router.properties ファイルを編集します(このファイルが存在しない場合は作成します)。
  2. 次のようにプロパティを設定します。
    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
    conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout=240
  3. プロパティ ファイルの所有者を「apigee」ユーザーにします。
    > chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. Router を再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-router restart