Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Síntoma
La implementación de las revisiones del proxy de la API mediante 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:
-
Causa Detalles Para Problema de conectividad de red entre el procesador de mensajes y Cassandra Error de comunicación entre el procesador de mensajes y Cassandra debido a problemas de conectividad de red o reglas de firewall. Usuarios de la nube privada perimetral 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 perimetral Aumento repentino de la latencia de la solicitud 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 la solicitud de lectura. Usuarios de la nube privada perimetral Paquete de proxy de API superior a 15 MB Cassandra se configuró para no permitir paquetes de proxy de API de más de 15 MB. Usuarios de la nube privada perimetral Problema de conectividad de red entre el procesador de mensajes y Cassandra
Diagnóstico
Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si usas Edge Public Cloud, comunícate con el equipo de Asistencia de Apigee Edge.
- 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, es posible que el error desaparezca.
ADVERTENCIA: No anules la implementación si los errores se muestran en el entorno de producción.
- Si el problema persiste, ejecuta la siguiente llamada al AP de administración para comprobar 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
Resultado de ejemplo del estado de la implementación que muestra Error durante el acceso al almacén de datos en uno de los Message Processor
{ "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 procesadores de mensajes que muestran el error de implementación. Si hubo un problema temporal de red, 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 procesador de mensajes que se reinició. Si no se encontraron errores, significa que se resolvió el problema.
- Verifica si el procesador de mensajes puede conectarse a cada nodo de Cassandra en los puertos 9042 y 9160:
- Si Telnet está disponible, usa esta función:
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 “Se agotó el tiempo de espera de la conexión”, comunícate con el equipo de operaciones de red.
- Si Telnet está disponible, usa esta función:
- Si el problema persiste, verifica si cada uno de los nodos de Cassandra escuchan en los puertos 9042 y 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Si los nodos de Cassandra no escuchan en el puerto 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 el equipo de operaciones de red.
- 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, es posible que el error desaparezca.
Resolució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 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 fallarán 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ás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.
Diagnóstico
- Verifica si los nodos de Cassandra se reiniciaron durante la implementación.Para ello, verifica 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
Resolución
- Asegúrate de que Cassandra esté funcionando.
- Comprueba si los procesadores de mensajes pueden conectarse al almacén de datos de Cassandra en los puertos 9042 y 9160.
Aumento repentino de la latencia de la solicitud de lectura en Cassandra
Una gran cantidad de lecturas en Cassandra depende de casos prácticos individuales y patrones de tráfico en los proxies que contienen políticas que requieren acceso de lectura desde Cassandra.
Por ejemplo, si se llama a una llamada GET a un tipo de otorgamiento de refresh_token para las políticas de OAuth y el token de actualización está asociado con muchos tokens de acceso, esto puede generar grandes cantidades de lecturas 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ás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.
- Si instalaste el panel de supervisión Beta, observa el panel de Cassandra y revisa el gráfico "Solicitudes de lectura" del período del problema. Revisa también el gráfico “Leer latencias de solicitud”.
- El comando
nodetool cfstats
es una herramienta alternativa para verificar las solicitudes de lectura y las latencias de lectura. Consulta la documentación de Cassandra para obtener más detalles sobre cómo usar este comando.
Resolución
Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, 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 procesadores de mensajes para asegurarte de que se haya establecido la conectividad.
- Para obtener 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.
- Si los nodos de Cassandra existentes no son adecuados para controlar el tráfico entrante, aumenta la capacidad del hardware o la cantidad de nodos del almacén de datos de Cassandra de forma adecuada.
Paquete de proxy de API 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 del paquete del proxy de la API es superior a 15 MB, verás el mensaje “Error al acceder al almacén de datos” cuando intentes implementar el proxy de API.
Diagnóstico
Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.
- Verifica los registros de Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) y comprueba 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 del proxy de la API es superior a 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>
Resolución
El paquete del proxy de la API será grande si hay demasiados archivos de recursos. Usa las siguientes soluciones para abordar este problema:
Solución 1: Trasladar los archivos de recursos al nivel de la organización o del entorno
- Transfiere cualquiera de los archivos de recursos, como archivos y módulos de Node.js, archivos y módulos, archivos JavaScript o JAR al nivel de organización o de entorno. Para obtener más información sobre los archivos de recursos, consulta la documentación de Edge.
- Implementa el proxy de la API y observa si el error desaparece.
Si el problema persiste o no puedes mover los archivos de recursos al nivel de la organización o del entorno por algún motivo, aplica la solución n.o 2.
Solución 2: Aumentar el tamaño del paquete del proxy de la API en Cassandra
Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás 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 de la propiedad de Cassandra tamaño de transporte de marcos de segunda mano, 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> con 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 1 a 3 en todos los nodos de Cassandra del clúster.
Si el problema persiste, comunícate con el equipo de asistencia de Apigee Edge.