<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">
|
症状
クライアント アプリケーションは、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 が返される
診断
- 特定のターゲット エンドポイントで使用されているターゲット サーバーの名前を確認します。 次のいずれかの方法で失敗した API プロキシの構成。
- ターゲット エンドポイントが 1 つしかない場合は、その特定のターゲット エンドポイントを確認します。
- 複数のターゲット エンドポイントがあり、どのエンドポイントでターゲット サーバーが無効になっているか不明な場合は、次の手順を行います。
- トレース セッションを有効にし、API 呼び出しを行って問題を再現します(503 サービスは利用できません)。
- トレースから [Target Request Flow Started] に移動し、以下のようにターゲット エンドポイントの名前を確認します。
- ターゲット エンドポイントを特定したら、次の例に示すように、使用するターゲット サーバー名をターゲット エンドポイントの構成から取得します。
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
上記の例では、demo-target という名前の単一のターゲット サーバーがあります。
- Edge UI または Edge API 呼び出しを使用して、ターゲット エンドポイントで使用されている各ターゲット サーバーの定義を取得します。
Edge UI
Edge UI を使用して定義を取得するには:
- [管理] >環境 >ターゲット サーバーをご覧ください。
- 障害が発生している特定の環境を選択します。
- 特定のターゲット サーバー名を検索して、ターゲット サーバーの定義を取得します。
たとえば、ターゲット サーバー名に「
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
- [管理] >環境 >ターゲット サーバーをご覧ください。
- 障害が発生している特定の環境を選択します。
- 特定のターゲット サーバー名を検索して、定義を取得します。
- 特定のターゲット サーバーを選択し、[Edit] をクリックします。
- [Enabled] チェックボックスをオンにします。
- [更新] をクリックします。
Edge API
<ph type="x-smartling-placeholder"></ph> ターゲット サーバー API を更新してターゲット サーバーの定義を更新し、 次に示すように、API のリクエスト ペイロードで IsEnabled が true に設定されます。
<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 サポートに連絡して共有します。
- Public Cloud をご利用の場合は、次の情報を提供してください。
- 組織名
- 環境名
- API プロキシ名
- エラーを再現するための curl コマンドを完了する
- 503 Service Unavailable(エラーコード NoActiveTargets)を含むリクエストを含むトレース ファイル
- Private Cloud をご利用の場合は、次の情報を提供してください。
<ph type="x-smartling-placeholder">
- </ph>
- 確認された完全なエラー メッセージ
- 環境名
- API プロキシ バンドル
- 503 Service Unavailable(エラーコード NoActiveTargets)を含むリクエストを含むトレース ファイル
- NGINX アクセスログ
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
) - Message Processor のログ
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
)