Erreur lors de l'accès au magasin de données

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Problème constaté

Le déploiement des révisions de proxy d'API via l'interface utilisateur Edge ou l'appel d'API de gestion Edge échoue avec l'erreur "Error while accessing datastore".

Messages d'erreur

Error in deployment for environment qa.

The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later

Causes possibles :

Causes courantes de ce problème:

  1. Cause Détails Pour
    Problème de connectivité réseau entre le processeur de messages et Cassandra Échec de communication entre le processeur de messages et Cassandra en raison de problèmes de connectivité réseau ou de règles de pare-feu. Utilisateurs de cloud privé périphérique
    Erreurs de déploiement dues aux redémarrages de Cassandra Le ou les nœuds Cassandra étaient indisponibles, car ils ont été redémarrés dans le cadre d'une maintenance de routine. Utilisateurs de cloud privé périphérique
    Pic de latence des requêtes de lecture sur Cassandra Si les nœuds Cassandra effectuent un grand nombre de lectures simultanées, ils peuvent répondre lentement en raison d'un pic de latence des requêtes de lecture. Utilisateurs de cloud privé périphérique
    Groupe de proxys d'API de plus de 15 Mo Cassandra a été configuré pour ne pas autoriser les groupes de proxys d'API d'une taille supérieure à 15 Mo. Utilisateurs de cloud privé périphérique

    Problème de connectivité réseau entre le processeur de messages et Cassandra

    Diagnostic

    Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

    1. Annuler le déploiement du proxy d'API et le redéployer En cas de problème de connectivité temporaire entre le processeur de messages et Cassandra, l'erreur peut disparaître.

      AVERTISSEMENT:N'annulez pas le déploiement si les erreurs sont observées dans l'environnement de production.

    2. Si le problème persiste, exécutez l'appel du point d'accès de gestion ci-dessous pour vérifier l'état du déploiement et vérifier s'il existe des erreurs au niveau des composants :
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      Exemple de sortie d'état de déploiement affichant une erreur lors de l'accès au datastore sur l'un des processeurs de messages

      {
      "environment" : [ {
      "aPIProxy" : [ {
      "name" : "simple-python",
      "revision" : [ {
      "configuration" : {
      "basePath" : "/",
      "steps" : [ ]
      },
      "name" : "1",
      "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada"
      }, {
      "error" : "Error while accessing datastore;Please retry later",
      "errorCode" : "datastore.ErrorWhileAccessingDataStore",
      "status" : "error",
      "type" : [ "message-processor" ],
      "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3"
      } 
      "state" : "error"
      } 
      
    3. Redémarrez le ou les processeurs de messages qui affichent l'erreur de déploiement. Si un problème réseau temporaire est survenu, l'erreur devrait disparaître :
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. Répétez l'étape 2 pour voir si le déploiement aboutit sur le processeur de messages redémarré. Si aucune erreur n'est détectée, cela signifie que le problème est résolu.
    5. Vérifiez si le processeur de messages est capable de se connecter à chaque nœud Cassandra sur les ports 9042 et 9160 :
      1. Si telnet est disponible, utilisez telnet :
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
        
      2. Si telnet n'est pas disponible, utilisez netcat pour vérifier la connectivité comme suit :
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
        
      3. Si vous obtenez la réponse "Connection Refused" ou "Connection timed out", contactez votre équipe chargée des opérations réseau.
    6. Si le problème persiste, vérifiez si chacun des nœuds Cassandra écoute sur les ports 9042 et 9160 :
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
      
    7. Si les nœuds Cassandra n'écoutent pas sur le port 9042 ou 9160, redémarrez le ou les nœuds Cassandra spécifiques :
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
      
    8. Si le problème persiste, contactez votre équipe des opérations réseau.

Résolution

Collaborez avec l'équipe des opérations réseau pour résoudre le problème de connectivité réseau entre le processeur de messages et Cassandra.

Erreurs de déploiement dues aux redémarrages de Cassandra

Les nœuds Cassandra sont généralement redémarrés périodiquement dans le cadre d'une maintenance de routine. Si des proxys d'API sont déployés pendant la maintenance de Cassandra, les déploiements échoueront en raison de l'inaccessibilité au datastore Cassandra.

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

Diagnostic

  1. Vérifiez si les nœuds Cassandra ont été redémarrés pendant le déploiement.Pour ce faire, consultez le journal Cassandra ou les journaux de temps de démarrage les plus récents du nœud Cassandra:

    grep "shutdown" /opt/apigee/var/log/apigee-cassandra/system.log

Résolution

  1. Assurez-vous que Cassandra est opérationnel.
  2. Vérifiez si les processeurs de messages peuvent se connecter au datastore Cassandra sur les ports 9042 et 9160.

Pic de latence des requêtes de lecture sur Cassandra

Un nombre élevé de lectures sur Cassandra dépend de cas d'utilisation individuels et de modèles de trafic sur les proxys contenant des stratégies nécessitant un accès en lecture de Cassandra.

Par exemple, si un appel GET du type d'attribution "refresh_token" est appelé pour les stratégies OAuth et que le jeton d'actualisation est associé à de nombreux jetons d'accès, cela peut entraîner un grand nombre de lectures à partir de Cassandra. Cela peut entraîner une augmentation de la latence des requêtes de lecture sur Cassandra.

Diagnostic

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Si vous avez installé le tableau de bord de surveillance bêta, consultez le tableau de bord Cassandra et examinez le graphique "Requêtes de lecture" correspondant à la période du problème. Consultez également le graphique concernant les latences des requêtes de lecture.
  2. Un autre outil permettant de vérifier les requêtes et les latences de lecture est la commande nodetool cfstats. Consultez la documentation Cassandra pour en savoir plus sur l'utilisation de cette commande.

Résolution

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Essayez de relancer le déploiement lorsque les performances de Cassandra sont de nouveau normales. Assurez-vous que l'ensemble de l'anneau Cassandra est normal.
  2. (Facultatif) Effectuez un redémarrage progressif des processeurs de messages pour vous assurer que la connectivité est établie.
  3. Pour une solution à long terme, examinez les modèles de trafic des API susceptibles de contribuer à un nombre plus élevé de lectures dans le datastore Cassandra. Contactez l'assistance Apigee Edge pour obtenir de l'aide afin de résoudre ce problème.
  4. Si les nœuds Cassandra existants ne sont pas adaptés à la gestion du trafic entrant, augmentez la capacité matérielle ou le nombre de nœuds du datastore Cassandra en conséquence.

Bundle de proxy d'API de plus de 15 Mo

La taille des groupes de proxys d'API sur Cassandra est limitée à 15 Mo. Si la taille du groupe de proxys d'API est supérieure à 15 Mo, le message "Erreur lors de l'accès au datastore" s'affiche lorsque vous tentez de déployer le proxy d'API.

Diagnostic

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Vérifiez les journaux du processeur de messages (/opt/apigee/var/log/edge-message-processor/logs/system.log) et vérifiez si des erreurs se sont produites lors du déploiement du proxy d'API spécifique.
  2. Si vous rencontrez une erreur semblable à celle illustrée dans la figure ci-dessous, l'erreur de déploiement est due au fait que la taille du groupe de proxys d'API est supérieure à 15 Mo.
    2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{}
    com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na]
            at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na]
    ...<snipped>
            Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1]
    ...<snipped>
    

Résolution

Le groupe de proxys d'API sera volumineux s'il y a trop de fichiers de ressources. Pour résoudre ce problème, utilisez les solutions suivantes:

Solution n° 1: Déplacer des fichiers de ressources au niveau de l'environnement ou de l'organisation

  1. Déplacez tous les fichiers de ressources, tels que les fichiers et modules de script NodeJS, les fichiers JavaScript ou les fichiers JAR, au niveau de l'environnement ou de l'organisation. Pour en savoir plus sur les fichiers de ressources, consultez la documentation Edge.
  2. Déployez le proxy d'API et voyez si l'erreur disparaît.

Si le problème persiste ou si vous ne pouvez pas déplacer les fichiers de ressources au niveau de l'environnement ou de l'organisation pour une raison quelconque, appliquez la solution n° 2.

Solution n° 2: Augmentez la taille du groupe de proxys d'API sur Cassandra

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

Suivez ces étapes pour augmenter la taille de la propriété Cassandra taille de transport de trame de récupération, qui contrôle la taille maximale du groupe de proxys d'API autorisé dans Edge:

  1. S'il n'existe pas, créez le fichier suivant :
    /opt/apigee/customer/application/cassandra.properties
    
  2. Ajoutez la ligne suivante au fichier, en remplaçant <size> par le paramètre de taille requis pour le groupe volumineux :
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
    
  3. Redémarrez Cassandra :
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  4. Répétez les étapes 1 à 3 sur tous les nœuds Cassandra du cluster.

Si le problème persiste, contactez l'assistance Apigee Edge.