Se produjo un error cuando se accedía a Datastore

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Síntoma

La implementación de revisiones del proxy de la API a través de la IU de Edge o la llamada a la API de Edge Management falla con el error "Error while accessing datastore".

Mensajes de error

Error in deployment for environment qa.

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

Causas posibles

Las causas típicas de este problema son las siguientes:

  1. Causa Detalles Para
    Problema de conectividad de red entre Message Processor y Cassandra Falla de comunicación entre el procesador de mensajes y Cassandra debido a la red problemas de conectividad o reglas de firewall. Usuarios de la nube privada perimetral
    Errores de implementación debidos a Cassandra reinicios Los nodos de Cassandra no estaban disponibles porque se reiniciaron como parte de la rutina mantenimiento. Usuarios de la nube privada perimetral
    Aumento repentino de la latencia de solicitud de lectura en Cassandra Si los nodos de Cassandra realizan una gran cantidad de lecturas simultáneas, puede responder lentamente debido al aumento repentino en la latencia de las solicitudes de lectura. Usuarios de la nube privada perimetral
    El paquete de proxy de API es superior a 15 MB Cassandra se configuró para no permitir paquetes de proxy de API de más de 15 MB en de tamaño del ensamble. Usuarios de la nube privada perimetral

    Problema de conectividad de red entre mensajes Procesador y Cassandra

    Diagnóstico

    Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si si te encuentras en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

    1. Anula la implementación del proxy de API y vuelve a implementarlo. Si hubo un problema de conectividad temporal entre el Message Processor y Cassandra, el error podría desaparecer.

      ADVERTENCIA: No anules la implementación si los errores aparecen en el panel de en un entorno de nube.

    2. Si el problema persiste, ejecuta la siguiente llamada AP de administración para verificar el Deployment y verifica si hay errores en algún componente:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments

      Resultado de ejemplo del estado de implementación en el que se muestra Error al acceder al almacén de datos en uno de los procesadores de mensajes

      {
      "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. Reinicia los procesadores de mensajes que muestran el error de implementación. Si había un problema temporal de red, el error debería desaparecer:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    4. Repite el paso 2 para ver si la implementación se realiza correctamente en el Message Processor que se reiniciar. Si no se encontraron errores, significa que el problema se resolvió.
    5. Comprueba si el procesador de mensajes puede conectarse a cada nodo de Cassandra en el puerto 9042 y 9160:
      1. Si Telnet está disponible, utilízalo:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
      2. Si Telnet no está disponible, úsalo para verificar la conectividad de la siguiente manera:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
      3. Si obtienes la respuesta “Connection ReArtículo”, haz lo siguiente: o “Se agotó el tiempo de espera de la conexión”, a tu equipo de operaciones de red.
    6. Si el problema persiste, comprueba si cada nodo de Cassandra está escuchando en el los puertos 9042 y 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
    7. Si los nodos de Cassandra no escuchan en el puerto 9042 o 9160, reinicia el nodos de Cassandra específicos:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    8. Si el problema persiste, comunícate con el equipo de operaciones de red.

Solución

Trabaja con tu equipo de operaciones de red y soluciona el problema de conectividad de red entre Message Processor y Cassandra.

Errores de implementación debidos a reinicios de Cassandra

Por lo general, los nodos de Cassandra se reinician de forma periódica como parte del mantenimiento de rutina. Si la API durante el trabajo de mantenimiento de Cassandra, las implementaciones fallan debido a la inaccesibilidad al almacén de datos de Cassandra.

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si están en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

Diagnóstico

  1. Comprueba si los nodos de Cassandra se reiniciaron durante la implementación.Esto se puede esto se hace verificando el registro de Cassandra o los registros de tiempo de inicio más recientes del nodo de Cassandra:

    grepshutdown/opt/apigee/var/log/apigee-cassandra/system.log

Solución

  1. Asegúrate de que Cassandra esté funcionando.
  2. Comprueba si los procesadores de mensajes pueden conectarse al almacén de datos de Cassandra en el puerto 9042 y 9,160

Aumento repentino de la latencia de solicitud de lectura en Cassandra

Una gran cantidad de lecturas en Cassandra depende de casos de uso individuales y patrones de tráfico en los proxies que contienen políticas que requieren acceso de lectura de Cassandra.

Por ejemplo, si se llama a un tipo de otorgamiento GET para refresh_token para las políticas de OAuth, y el un token de actualización se asocia con muchos tokens de acceso, lo que puede generar grandes cantidades lee de Cassandra. Esto puede provocar un aumento en la latencia de la solicitud de lectura en Cassandra.

Diagnóstico

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si están en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

  1. Si instalaste el panel Beta Monitoring, ve al panel de Cassandra y revisa las "Solicitudes de lectura" gráfico para el período del problema. También revisa el gráfico de "Leer Latencias de las solicitudes".
  2. El comando nodetool cfstats es una herramienta alternativa para verificar las solicitudes de lectura y las latencias de lectura. Ver Cassandra documentación para obtener más detalles sobre cómo usar este comando.

Solución

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si están en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

  1. Vuelve a intentar la implementación una vez que el rendimiento de Cassandra vuelva a la normalidad. Asegúrate de que todo El sonido de Cassandra es normal.
  2. (Opcional) Realiza un reinicio progresivo de los procesadores de mensajes para asegurarte de que la conectividad sea establecidos.
  3. Para una solución a largo plazo, revisa los patrones de tráfico de la API que podrían contribuir a lecturas superiores en el almacén de datos de Cassandra. Comunícate con el equipo de asistencia de Apigee Edge para obtener ayuda con la solución de este problema.
  4. Si los nodos de Cassandra existentes no son adecuados para manejar el tráfico entrante, aumentar la capacidad de hardware o el número de nodos del almacén de datos de Cassandra apropiadamente.

API Paquete de proxy con un tamaño superior a 15 MB

El tamaño de los paquetes de proxy de API está restringido a 15 MB en Cassandra. Si el tamaño de la API es superior a 15 MB. Aparecerá el mensaje “Error al acceder al almacén de datos”. cuando implementar el proxy de API.

Diagnóstico

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si están en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

  1. Revisa los registros de Message Processor (/opt/apigee/var/log/edge-message-processor/logs/system.log) y veamos si hay se produjeron errores durante la implementación del proxy de API específico.
  2. Si ves un error similar al que se muestra en la siguiente figura, significa que el error de implementación es que el tamaño del paquete del proxy de API es mayor 15 MB.
    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>

Solución

El paquete del proxy de API será grande si hay demasiados archivos de recursos. Usa los siguientes soluciones para abordar este problema:

Solución 1: Mueve los archivos de recursos al nivel de Organización o Entorno

  1. Traslada cualquiera de los archivos de recursos, como los archivos y módulos de secuencias de comandos de Node.js, los archivos JavaScript, JAR a nivel del entorno o de la organización. Para obtener más información sobre los archivos de recursos, consulta la documentación de Edge.
  2. Implementa el proxy de API y observa si el error desaparece.

Si el problema persiste o no puedes mover los archivos de recursos al entorno o la organización por algún motivo, aplique la solución n.o 2.

Solución 2: Aumentar el tamaño del paquete del proxy de API en Cassandra

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si están en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

Sigue estos pasos para aumentar el tamaño del marco de ahorro de la propiedad Cassandra de transporte público, que controla el tamaño máximo del paquete del proxy de API permitido en Perímetro:

  1. Crea el siguiente archivo, si no existe:
    /opt/apigee/customer/application/cassandra.properties
  2. Agrega la siguiente línea al archivo reemplazando <size>. con la configuración de tamaño necesaria el paquete grande:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
  3. Reinicia Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  4. Repite los pasos del 1 al 3 en todos los nodos de Cassandra del clúster.

Si el problema persiste, comunícate con el equipo de asistencia de Apigee Edge.