503 Service indisponible - NoActiveTargets

Vous consultez la documentation Apigee Edge.
Accédez à la documentation Apigee X.
info

Vidéos

Pour en savoir plus sur les erreurs 503, regardez les vidéos suivantes :

Vidéo Description
Résoudre les erreurs 503 "Service indisponible" - NoActiveTargets Découvrez les points suivants :
  • Importance des serveurs cibles et des moniteurs d'état
  • Dépannage et résolution d'une erreur en temps réel 503 "Service indisponible" - NoActiveTargets

Problème constaté

L'application cliente reçoit le code d'état de réponse HTTP 503 avec le message Service indisponible et le code d'erreur NoActiveTargets pour les requêtes de proxy d'API.

Message d'erreur

La réponse d'erreur suivante s'affiche :

HTTP/1.1 503 Service Unavailable
  

Le message d'erreur suivant s'affiche dans la réponse HTTP :

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

Causes possibles

La réponse HTTP 503 Service indisponible avec le code d'erreur NoActiveTargets est généralement observée lorsque vous utilisez un ou plusieurs serveurs cibles dans la configuration du point de terminaison cible de votre proxy d'API.

Le tableau suivant liste les causes possibles de la réponse 503 Service indisponible avec le code d'erreur NoActiveTargets :

Cause Description Qui peut effectuer les étapes de dépannage
Le serveur cible est désactivé Le serveur cible spécifié dans la configuration du point de terminaison cible est désactivé. Utilisateurs du cloud public et privé Edge
Erreurs de connexion dues à une résolution DNS incorrecte La résolution DNS du serveur cible a entraîné des adresses IP incorrectes qui ont entraîné des erreurs de connexion. Utilisateurs du cloud privé Edge
Erreurs de connexion Des problèmes de réseau ou de connectivité empêchent le client de se connecter au serveur. Utilisateurs du cloud privé Edge
Alias d'hôte cible incorrect L'hôte du serveur cible spécifié est incorrect ou comporte des caractères indésirables (par exemple, un espace). Utilisateurs du cloud public et privé Edge
Échecs de handshake SSL Le handshake TLS/SSL a échoué entre le client et le serveur. Utilisateurs du cloud public et privé Edge
Échecs de vérification de l'état Les vérifications de l'état configurées pour vérifier l'état du serveur cible peuvent échouer pour une raison quelconque. Utilisateurs du cloud privé Edge

Cause : le serveur cible est désactivé

Si tous les serveurs cibles spécifiés dans la configuration du point de terminaison cible sont désactivés, vous obtenez une réponse 503 Service indisponible avec le code d'erreur NoActiveTargets.

Diagnostic

  1. Déterminez le nom du serveur cible utilisé dans la configuration spécifique du point de terminaison cible du proxy d'API en échec de l'une des manières suivantes :
    1. S'il n'y a qu'un seul point de terminaison cible, vérifiez-le.
    2. S'il existe plusieurs points de terminaison cibles et que vous ne savez pas lequel a désactivé le serveur cible, procédez comme suit :
      1. Activez la session de trace, effectuez l'appel d'API et reproduisez le problème : 503 Service indisponible.
      2. Dans la trace, accédez à Target Request Flow Started (Flux de requête cible démarré) et déterminez le nom du point de terminaison cible, comme indiqué ci-dessous :
      3. Déterminer le nom du point de terminaison cible à partir de la trace

  2. Une fois que vous avez identifié le point de terminaison cible, obtenez le nom du serveur cible utilisé dans la configuration du point de terminaison cible, comme indiqué dans l'exemple ci-dessous :
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    Dans l'exemple ci-dessus, il n'existe qu'un seul serveur cible nommé demo-target.

  3. Obtenez la définition de chacun des serveurs cibles utilisés dans le point de terminaison cible à l'aide de l'interface utilisateur Edge ou de l'appel d'API Edge.

    Interface utilisateur Edge

    Pour obtenir la définition à l'aide de l'interface utilisateur Edge :

    1. Accédez à Admin > Environments > Target Servers (Administration > Environnements > Serveurs cibles).
    2. Sélectionnez l'environnement spécifique dans lequel l'échec se produit.
    3. Recherchez le nom du serveur cible spécifique pour obtenir la définition du serveur cible.

      Par exemple, saisissez le nom du serveur cible demo-target. Sa définition s'affiche comme suit :

      Nom du serveur cible et état (activé/désactivé)

      Notez que le serveur cible demo-target possède un alias d'hôte, un numéro de port et que le protocole SSL est activé. Toutefois, le serveur cible lui-même est désactivé , comme l'indique l'élément ENABLED (ACTIVÉ) grisé.

    API Edge

    Pour obtenir la définition à l'aide de l'API Edge :

    Utilisez l'API Get TargetServer pour obtenir la définition du serveur cible.

    Sortie de la définition du serveur cible

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

    La sortie de l'API Apigee indique que le serveur cible demo-target est désactivé , car l'élément IsEnabled est défini sur "false".

    Étant donné que le serveur cible est désactivé, le processeur de messages envoie immédiatement une réponse 503 Service indisponible avec le code d'erreur NoActiveTargets au client.

Solution

Assurez-vous que les serveurs cibles spécifiques utilisés dans la configuration du point de terminaison cible de votre proxy d'API sont toujours activés.

Interface utilisateur Edge

  1. Accédez à Admin > Environments > Target Servers (Administration > Environnements > Serveurs cibles).
  2. Sélectionnez l'environnement spécifique dans lequel l'échec se produit.
  3. Recherchez le nom du serveur cible spécifique pour obtenir sa définition.
  4. Sélectionnez le serveur cible spécifique, puis cliquez sur Edit (Modifier).
  5. Cochez la case Enabled (Activé).
  6. Cliquez sur Update (Mettre à jour).

API Edge

Utilisez l' API Update a Target Server pour mettre à jour la définition du serveur cible et vous assurer que IsEnabled est défini sur true dans la charge utile de la requête de l'API, comme indiqué ci-dessous :

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

Si le problème persiste, consultez la page Vous devez collecter des informations de diagnostic.

Diagnostiquer les problèmes à l'aide de la surveillance des API

La surveillance des API vous permet d'isoler rapidement les zones à problèmes pour diagnostiquer les problèmes d'erreur, de performances et de latence et leur source, tels que les applications de développeur , les proxys d'API, les cibles backend ou la plate-forme d'API.

Parcourez un exemple de scénario qui montre comment résoudre les problèmes 5xx avec vos API à l'aide de la surveillance des API. Par exemple, vous pouvez configurer une alerte pour être averti lorsque le nombre d'erreurs messaging.adaptors.http.flow.NoActiveTargets dépasse un seuil particulier.

Vous devez collecter des informations de diagnostic

Si le problème persiste même après avoir suivi les instructions ci-dessus, veuillez collecter les informations de diagnostic suivantes Contactez l'assistance Apigee et partagez-les avec elle :

  1. Si vous êtes un utilisateur du cloud public, fournissez les informations suivantes :
    1. Nom de l'organisation
    2. Nom de l'environnement
    3. Nom du proxy d'API
    4. Commande curl complète pour reproduire l'erreur
    5. Fichier de trace contenant les requêtes avec l'erreur 503 "Service indisponible" et le code d'erreur NoActiveTargets
  2. Si vous êtes un utilisateur du cloud privé, fournissez les informations suivantes :
    1. Message d'erreur complet observé
    2. Nom de l'environnement
    3. Bundle de proxy d'API
    4. Fichier de trace contenant les requêtes avec l'erreur 503 "Service indisponible" et le code d'erreur NoActiveTargets
    5. Journaux d'accès NGINX

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

    6. Journaux du processeur de messages

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