503 Service Unavailable - NoActiveTargets(サービス利用不可 - NoActiveTargets)

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

動画

503 エラーについて詳しくは、次の動画をご覧ください。

動画 説明
<ph type="x-smartling-placeholder"></ph> 503 Service Unavailable - NoActiveTargets のトラブルシューティングと解決を行う 以下の詳細をご確認ください。 <ph type="x-smartling-placeholder">
    </ph>
  • ターゲット・サーバーとヘルス・モニターの重要性
  • リアルタイム 503 Service Unavailable - NoActiveTargets エラーのトラブルシューティングと解決

症状

クライアント アプリケーションは、HTTP レスポンスのステータス コード 503 を、 Service Unavailable というメッセージとエラーコード NoActiveTargets が表示される API プロキシリクエストだけです

エラー メッセージ

次のエラー レスポンスが表示されます。

HTTP/1.1 503 Service Unavailable
  

HTTP レスポンスに次のエラー メッセージが表示されます。

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
       }
    }
}
  

考えられる原因

通常、HTTP レスポンス「503 Service Unavailable」とエラーコード NoActiveTargets が表示されます。 API プロキシのターゲット エンドポイント構成で 1 つ以上のターゲット サーバーを使用する場合。

次の表に、エラーコード NoActiveTargets のレスポンス「503 Service Unavailable」の考えられる原因を示します。

原因 説明 トラブルシューティングの手順を実施できるユーザー
Target Server is Disabled(ターゲット サーバーが無効) ターゲット エンドポイントの構成で指定されたターゲット サーバーが無効になっている。 Edge Public Cloud ユーザーと Edge Private Cloud ユーザー
誤った DNS 解決が原因の接続エラー ターゲット サーバーの DNS 解決で不正な IP アドレスが発生し、接続エラーが発生しました。 Edge Private Cloud ユーザー
接続エラー ネットワークまたは接続の問題により、クライアントがサーバーに接続できない。 Edge Private Cloud ユーザー
ターゲット ホスト エイリアスが正しくない 指定されたターゲット サーバーのホストが正しくないか、不要な文字(スペースなど)が含まれています。 Edge Public Cloud ユーザーと Edge Private Cloud ユーザー
SSL handshake の失敗 クライアントとサーバー間の TLS/SSL handshake が失敗しました。 Edge Public Cloud ユーザーと Edge Private Cloud ユーザー
ヘルスチェックの失敗 ターゲット サーバーの健全性を確認するように構成されたヘルスチェックが、なんらかの理由で失敗することがあります。 Edge Private Cloud ユーザー

原因: ターゲット サーバーが無効になっている

ターゲット エンドポイントの構成で指定されたすべてのターゲット サーバーが無効になっている場合、 503 Service Unavailable レスポンスとエラーコード NoActiveTargets が返される

診断

  1. 特定のターゲット エンドポイントで使用されているターゲット サーバーの名前を確認します。 次のいずれかの方法で失敗した API プロキシの構成。
    1. ターゲット エンドポイントが 1 つしかない場合は、その特定のターゲット エンドポイントを確認します。
    2. 複数のターゲット エンドポイントがあり、どのエンドポイントでターゲット サーバーが無効になっているか不明な場合は、次の手順を行います。
      1. トレース セッションを有効にし、API 呼び出しを行って問題を再現します(503 サービスは利用できません)。
      2. トレースから [Target Request Flow Started] に移動し、以下のようにターゲット エンドポイントの名前を確認します。
      3. トレースからターゲット エンドポイント名を特定する

  2. ターゲット エンドポイントを特定したら、次の例に示すように、使用するターゲット サーバー名をターゲット エンドポイントの構成から取得します。
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    上記の例では、demo-target という名前の単一のターゲット サーバーがあります。

  3. Edge UI または Edge API 呼び出しを使用して、ターゲット エンドポイントで使用されている各ターゲット サーバーの定義を取得します。

    Edge UI

    Edge UI を使用して定義を取得するには:

    1. [管理] >環境 >ターゲット サーバーをご覧ください。
    2. 障害が発生している特定の環境を選択します。
    3. 特定のターゲット サーバー名を検索して、ターゲット サーバーの定義を取得します。

      たとえば、ターゲット サーバー名に「demo-target」と入力すると、次のようにその定義が表示されます。

      ターゲット サーバー名と有効/無効ステータス

      ターゲット サーバー demo-target にはホスト エイリアスとポート番号があり、SSL が有効になっています。 ただし、ターゲット サーバー自体が無効 になっている場合、ENABLED 要素がグレー表示になります。

    Edge API

    Edge API を使用して定義を取得するには:

    <ph type="x-smartling-placeholder"></ph> Get TargetServer API を使用して、ターゲット サーバーの定義を取得します。

    ターゲット サーバー定義の出力

    <TargetServer name="demo-target">
      <Host>demo-target.apigee.net</Host>
      <Port>443</Port>
      <IsEnabled>false</IsEnabled>
      <SSLInfo>
          <Enabled>true</Enabled>
      </SSLInfo>
    </TargetServer>
              

    Apigee API の出力に、ターゲット サーバー demo-target無効になっていることが示されます 要素 IsEnabled が false に設定されているためです。

    ターゲット サーバーが無効になっているため、Message Processor は 503 Service エラーコード NoActiveTargets により直ちに レスポンスが返されます。

解決策

API のターゲット エンドポイント構成で使用されている特定のターゲット サーバーを確認する プロキシは常に有効です。

Edge UI

  1. [管理] >環境 >ターゲット サーバーをご覧ください。
  2. 障害が発生している特定の環境を選択します。
  3. 特定のターゲット サーバー名を検索して、定義を取得します。
  4. 特定のターゲット サーバーを選択し、[Edit] をクリックします。
  5. [Enabled] チェックボックスをオンにします。
  6. [更新] をクリックします。

Edge API

<ph type="x-smartling-placeholder"></ph> ターゲット サーバー API を更新してターゲット サーバーの定義を更新し、 次に示すように、API のリクエスト ペイロードで IsEnabledtrue に設定されます。

<TargetServer name="demo-target">
  <Host>demo-target.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
      <Enabled>true</Enabled>
  </SSLInfo>
</TargetServer>
        

問題が解決しない場合は、 診断情報の収集が必要な場合

API Monitoring を使用して問題を診断する

API Monitoring で問題を切り分ける エラー、パフォーマンス、レイテンシの問題とその原因(デベロッパー、 アプリ、API プロキシ、バックエンド ターゲット、または API プラットフォーム。

サンプル シナリオを使用する をご覧ください。たとえば messaging.adaptors.http.flow.NoActiveTargets の件数が増加したときに通知されるようにアラートを設定できます。 検出できます。

診断情報の収集が必要な場合

上記の手順でも問題が解決しない場合は、以下の情報を収集します。 表示されます。Apigee サポートに連絡して共有します。

  1. Public Cloud をご利用の場合は、次の情報を提供してください。
    1. 組織名
    2. 環境名
    3. API プロキシ名
    4. エラーを再現するための curl コマンドを完了する
    5. 503 Service Unavailable(エラーコード NoActiveTargets)を含むリクエストを含むトレース ファイル
  2. Private Cloud をご利用の場合は、次の情報を提供してください。 <ph type="x-smartling-placeholder">
      </ph>
    1. 確認された完全なエラー メッセージ
    2. 環境名
    3. API プロキシ バンドル
    4. 503 Service Unavailable(エラーコード NoActiveTargets)を含むリクエストを含むトレース ファイル
    5. NGINX アクセスログ

      /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log

    6. Message Processor のログ

      /opt/apigee/var/log/edge-message-processor/logs/system.log