Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
Síntoma
La implementación de revisiones de proxy de API a través de la IU de Edge o la llamada a la API de administración de Edge 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:
-
Causa Detalles Para Problema de conectividad de red entre el Message Processor y Cassandra Falla de comunicación entre el Message Processor y Cassandra debido a problemas de conectividad de red o reglas de firewall Usuarios de la nube privada de Edge Errores de implementación debido a reinicios de Cassandra Los nodos de Cassandra no estaban disponibles porque se reiniciaron como parte del mantenimiento de rutina. Usuarios de la nube privada de Edge Aumento repentino en la latencia de solicitudes de lectura en Cassandra Si los nodos de Cassandra realizan una gran cantidad de lecturas simultáneas, es posible que respondan con lentitud debido al aumento repentino en la latencia de solicitudes de lectura. Usuarios de la nube privada de Edge Paquete de proxy de API de más de 15 MB Cassandra se configuró para no permitir paquetes de proxy de API de más de 15 MB de tamaño. Usuarios de la nube privada de Edge Problema de conectividad de red entre el Message Processor y Cassandra
Diagnóstico
Nota: Solo los usuarios de la nube privada de Edge pueden realizar los siguientes pasos. Si usas la nube perimetral pública, comunícate con el equipo de asistencia de Apigee Edge.
- Anula la implementación y vuelve a implementar el proxy de API. Si hubo un problema de conectividad temporal
entre el Message Processor y Cassandra, es posible que el error desaparezca.
ADVERTENCIA: No anules la implementación si los errores se ven en el entorno de producción
- Si el problema persiste, ejecuta la siguiente llamada a la API de administración para verificar el
estado de la implementación y comprobar si hay errores en algún componente:
curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
Ejemplo de resultado del estado de la implementación que muestra el error al acceder al almacén de datos en uno de los Message Processors
{ "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" }
- Reinicia los Message Processors que muestran el error de implementación. Si hubo un
problema de red temporal, el error debería desaparecer:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Repite el paso 2 para ver si la implementación se realiza correctamente en el Message Processor que se reinició. Si no se encuentran errores, eso indica que el problema se resolvió.
- Verifica si el Message Processor puede conectarse a cada nodo de Cassandra en los puertos 9042
y 9160:
- Si telnet está disponible, úsalo:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Si telnet no está disponible, usa netcat para verificar la conectividad de la siguiente manera:
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- Si recibes la respuesta "Connection Refused" o "Connection timed out", comunícate con tu equipo de operaciones de red.
- Si telnet está disponible, úsalo:
- Si el problema persiste, verifica si cada uno de los nodos de Cassandra está escuchando en el
puerto 9042 y puerto 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Si los nodos de Cassandra no están escuchando en los puertos 9042 o 9160, reinicia los
nodos de Cassandra específicos:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Si el problema persiste, comunícate con tu equipo de operaciones de red.
- Anula la implementación y vuelve a implementar el proxy de API. Si hubo un problema de conectividad temporal
entre el Message Processor y Cassandra, es posible que el error desaparezca.
Solución
Trabaja con tu equipo de operaciones de red y soluciona el problema de conectividad de red entre el Message Processor y Cassandra.
Errores de implementación debido a reinicios de Cassandra
Los nodos de Cassandra suelen reiniciarse periódicamente como parte del mantenimiento de rutina. Si los proxies de API se implementan 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 de Edge pueden realizar los siguientes pasos. Si usas la nube perimetral pública, comunícate con el equipo de asistencia de Apigee Edge.
Diagnóstico
- Verifica si los nodos de Cassandra se reiniciaron durante el tiempo de la implementación.Para ello, se puede
hacer revisando el registro de Cassandra o los registros de tiempo de inicio más recientes del nodo de Cassandra:
grep"shutdown"/opt/apigee/var/log/apigee-cassandra/system.log
Solución
- Asegúrate de que Cassandra esté en funcionamiento.
- Verifica si los Message Processors pueden conectarse al almacén de datos de Cassandra en los puertos 9042 y 9160.
Aumento repentino en la latencia de solicitudes de lectura en Cassandra
Una gran cantidad de lecturas en Cassandra depende de los casos de uso individuales y los patrones de tráfico en los proxies que contienen políticas que requieren acceso de lectura de Cassandra.
Por ejemplo, si se llama a una llamada GET al tipo de otorgamiento refresh_token para las políticas de OAuth y el token de actualización está asociado con muchos tokens de acceso, esto puede generar una gran cantidad de lecturas de Cassandra. Esto puede provocar un aumento en la latencia de solicitudes de lectura en Cassandra.
Diagnóstico
Nota: Solo los usuarios de la nube privada de Edge pueden realizar los siguientes pasos. Si usas la nube perimetral pública, comunícate con el equipo de asistencia de Apigee Edge.

- Si instalaste el panel de supervisión beta, consulta el panel de Cassandra y revisa el gráfico "Read Requests" para el período del problema. También revisa el gráfico de "Read Request Latencies".
- La herramienta alternativa para verificar las solicitudes de lectura y las latencias de lectura es el comando
nodetool cfstats. Consulta la documentación de Cassandra para obtener más detalles sobre el uso de este comando.
Solución
Nota: Solo los usuarios de la nube privada de Edge pueden realizar los siguientes pasos. Si usas la nube perimetral pública, comunícate con el equipo de asistencia de Apigee Edge.
- Vuelve a intentar la implementación una vez que el rendimiento de Cassandra vuelva a la normalidad. Asegúrate de que todo el anillo de Cassandra sea normal.
- (Opcional) Realiza un reinicio progresivo en los Message Processors para asegurarte de que se establezca la conectividad.
- Para obtener una solución a largo plazo, revisa los patrones de tráfico de la API que podrían contribuir a mayores lecturas en el almacén de datos de Cassandra. Comunícate con el equipo de asistencia de Apigee Edge para obtener ayuda para solucionar este problema.
- Si los nodos de Cassandra existentes no son adecuados para controlar el tráfico entrante, entonces aumenta la capacidad de hardware o la cantidad de nodos del almacén de datos de Cassandra de forma adecuada.
Paquete de proxy de API de más de 15 MB
El tamaño de los paquetes de proxy de API está restringido a 15 MB en Cassandra. Si el tamaño del paquete de proxy de API es superior a 15 MB, verás el mensaje "Error while accessing datastore" cuando intentes implementar el proxy de API.
Diagnóstico
Nota: Solo los usuarios de la nube privada de Edge pueden realizar los siguientes pasos. Si usas la nube perimetral pública, comunícate con el equipo de asistencia de Apigee Edge.
- Revisa los registros del Message Processor
(
/opt/apigee/var/log/edge-message-processor/logs/system.log) y verifica si se produjeron errores durante la implementación del proxy de API específico. - Si ves un error similar al que se muestra en la siguiente figura, el error de implementación
se debe a que el tamaño del paquete de proxy de API es > 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 de proxy de API será grande si hay demasiados archivos de recursos. Usa las siguientes soluciones para abordar este problema:
Solución 1: Mueve los archivos de recursos al nivel de entorno o de organización
- Mueve cualquiera de los archivos de recursos, como archivos y módulos de secuencias de comandos de NodeJS, archivos JavaScript, archivos JAR, al nivel de entorno o de organización. Para obtener más información sobre los archivos de recursos, consulta la documentación de Edge.
- Implementa el proxy de API y verifica si el error desaparece.
Si el problema persiste o no puedes mover los archivos de recursos al nivel de entorno o de organización nivel por algún motivo, aplica la solución 2.
Solución 2: Aumenta el tamaño del paquete de proxy de API en Cassandra
Nota: Solo los usuarios de la nube privada de Edge pueden realizar los siguientes pasos. Si usas la nube perimetral pública, comunícate con el equipo de asistencia de Apigee Edge.
Sigue estos pasos para aumentar el tamaño de la propiedad thrift frame transport size de Cassandra, que controla el tamaño máximo del paquete de proxy de API permitido en Edge:
- Crea el siguiente archivo si no existe:
/opt/apigee/customer/application/cassandra.properties
- Agrega la siguiente línea al archivo y reemplaza <size> por la configuración de tamaño necesaria para
el paquete grande:
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Reinicia Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 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.