503 Service indisponible - NoActiveTargets

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Vidéos

Regardez les vidéos suivantes pour en savoir plus sur les erreurs 503:

Vidéo Description
<ph type="x-smartling-placeholder"></ph> Résoudre le problème 503 Service indisponible – NoActiveTargets Apprenez-en plus sur les points suivants: <ph type="x-smartling-placeholder">
    </ph>
  • Importance des serveurs cibles et des dispositifs de contrôle de l'état
  • Dépannage et résolution d'une erreur 503 Service indisponible en temps réel – NoActiveTargets

Symptôme

L'application cliente reçoit le code d'état de réponse HTTP 503 avec le paramètre le message Service Unavailable 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 Unavailable 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 dans votre proxy d'API.

Le tableau suivant répertorie les causes possibles de la réponse 503 Service Unavailable 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 Edge de cloud public et privé
Erreurs de connexion dues à une résolution DNS incorrecte La résolution DNS du serveur cible a généré des adresses IP incorrectes entraînant des erreurs de connexion. Utilisateurs de 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 de 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 (un espace, par exemple). Utilisateurs Edge de cloud public et privé
Échecs de handshake SSL Le handshake TLS/SSL a échoué entre le client et le serveur. Utilisateurs Edge de cloud public et privé
Échecs de la vérification de l'état Les vérifications d'état configurées pour vérifier l'état du serveur cible peuvent échouer pour une raison quelconque. Utilisateurs de 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 Vous obtenez la réponse 503 Service Unavailable avec le code d'erreur NoActiveTargets.

Diagnostic

  1. Déterminer le nom du serveur cible utilisé dans le point de terminaison cible spécifique Configurez le proxy d'API défaillant de l'une des manières suivantes:
    1. S'il n'existe qu'un seul point de terminaison cible, vérifiez ce point de terminaison.
    2. S'il existe plusieurs points de terminaison cibles et si 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. À partir de la trace, accédez à Target Request Flow Started (Flux de requête cible démarré), puis 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, récupérez le nom du serveur cible utilisé à partir de sa configuration, comme illustré 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 existe 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 d'un appel d'API Edge.

    Interface utilisateur périphérique

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

    1. Accédez à Admin > Environnements > Serveurs cibles
    2. Sélectionnez l'environnement spécifique dans lequel vous constatez l'échec.
    3. Recherchez le nom du serveur cible spécifique pour obtenir la définition du serveur cible.

      Par exemple, saisissez le nom de serveur cible demo-target. Sa définition est illustrée ci-dessous:

      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 SSL est activé. Cependant, le serveur cible lui-même est désactivé , ce qui signifie que l'élément ACTIVÉ est grisé.

    API Edge

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

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

    Sortie de 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>
              

    Le résultat de l'API Apigee montre que le serveur cible demo-target est désactivé. car l'élément IsEnabled est défini sur "false".

    Le serveur cible étant désactivé, le processeur de messages enverra le message 503 Service non disponible avec le code d'erreur NoActiveTargets immédiatement en tant que au client.

Solution

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

Interface utilisateur périphérique

  1. Accédez à Admin > Environnements > Serveurs cibles
  2. Sélectionnez l'environnement spécifique dans lequel vous constatez l'échec.
  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 Modifier.
  5. Cochez la case Activé.
  6. Cliquez sur Mettre à jour.

API Edge

Utilisez le Mettez à jour une API de serveur cible pour mettre à jour la définition du serveur cible et assurez-vous 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, accédez à Obligation de recueillir des informations de diagnostic.

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

La surveillance des API vous permet d'isoler les problèmes pour diagnostiquer rapidement les problèmes d'erreurs, de performances et de latence, ainsi que leur origine, comme les problèmes applications, proxys d'API, cibles de backend ou plate-forme d'API.

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

Vous devez collecter des informations de diagnostic

Si le problème persiste alors que vous avez suivi les instructions ci-dessus, veuillez rassembler les informations suivantes : des informations de diagnostic. Contactez-les et partagez-les avec l'assistance Apigee:

  1. Si vous êtes un utilisateur de cloud public, fournissez les informations suivantes:
    1. Nom de l'organisation
    2. Nom de l'environnement
    3. Nom du proxy d'API
    4. Exécutez la commande curl pour reproduire l'erreur
    5. Fichier de suivi contenant les requêtes avec l'erreur 503 Service non disponible avec le code d'erreur NoActiveTargets
  2. Si vous êtes un utilisateur de Private Cloud, fournissez les informations suivantes: <ph type="x-smartling-placeholder">
      </ph>
    1. Message d'erreur complet observé
    2. Nom de l'environnement
    3. Groupe de proxys d'API
    4. Fichier de suivi contenant les requêtes avec l'erreur 503 Service non disponible avec 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)