Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Sintomo
Il deployment delle revisioni del proxy API tramite la UI di Edge o la chiamata all'API di gestione di Edge non riesce e viene visualizzato il
errore "Error while accessing datastore".
Messaggi di errore
Error in deployment for environment qa. The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later
Possibili cause
Le cause tipiche di questo problema sono:
-
Causa Dettagli Per Problema di connettività di rete tra il processore di messaggi e Cassandra Errore di comunicazione tra il processore di messaggi e Cassandra a causa di problemi di connettività di rete o regole firewall. Utenti di Edge Private Cloud Errori di deployment dovuti ai riavvii di Cassandra Il nodo o i nodi di Cassandra non erano disponibili perché sono stati riavviati nell'ambito della manutenzione di routine manutenzione. Utenti di Edge Private Cloud Picco nella latenza delle richieste di lettura su Cassandra Se il nodo o i nodi di Cassandra eseguono un numero elevato di letture simultanee, allora potrebbe rispondere lentamente a causa di un picco nella latenza delle richieste di lettura. Utenti di Edge Private Cloud Bundle del proxy API di dimensioni superiori a 15 MB Cassandra è stato configurato in modo da non consentire bundle di proxy API di dimensioni superiori a 15 MB in size. Utenti di Edge Private Cloud Problema di connettività di rete tra il Message Processor e Cassandra
Diagnosi
Nota: solo gli utenti di Edge Private Cloud possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza di Apigee Edge.
- Annulla il deployment e ripeti il deployment del proxy API. Se si è verificato un problema di connettività temporaneo tra il processore di messaggi e Cassandra, l'errore potrebbe scomparire.
AVVISO: non annullare il deployment se gli errori vengono visualizzati nell'ambiente di produzione.
- Se il problema persiste, esegui la seguente chiamata all'API di gestione per controllare lo stato del deployment e verificare se sono presenti errori in uno dei componenti:
curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
Esempio di output dello stato del deployment che mostra l'errore durante l'accesso al datastore su uno dei 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" }
- Riavvia il processore di messaggi o i processori di messaggi che mostrano l'errore di deployment. Se si è verificato un
problema di rete temporaneo, l'errore dovrebbe scomparire:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Ripeti il passaggio 2 per verificare se il deployment è riuscito sul processore di messaggi che è stato riavviato. Se non vengono rilevati errori, significa che il problema è stato risolto.
- Verifica se il Message Processor è in grado di connettersi a ogni nodo di Cassandra sulle porte 9042
e 9160:
- Se telnet è disponibile, utilizzalo:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Se telnet non è disponibile, utilizza netcat per verificare la connettività come segue:
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- Se ricevi la risposta "Connection Refused" o "Connection timed out", contatta il team di operazioni di rete.
- Se telnet è disponibile, utilizzalo:
- Se il problema persiste, verifica se ciascuno dei nodi di Cassandra è in ascolto sulla
porta 9042 e sulla porta 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Se i nodi di Cassandra non sono in ascolto sulla porta 9042 o 9160, riavvia i
nodi di Cassandra specifici:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Se il problema persiste, contatta il team di operazioni di rete.
- Annulla il deployment e ripeti il deployment del proxy API. Se si è verificato un problema di connettività temporaneo tra il processore di messaggi e Cassandra, l'errore potrebbe scomparire.
Risoluzione
Collabora con il team di operazioni di rete e risolvi il problema di connettività di rete tra il processore di messaggi e Cassandra.
Errori di deployment dovuti ai riavvii di Cassandra
I nodi di Cassandra vengono in genere riavviati periodicamente nell'ambito della manutenzione di routine. Se i proxy API vengono sottoposti a deployment durante i lavori di manutenzione di Cassandra, i deployment non riescono a causa dell' inaccessibilità al datastore di Cassandra.
Nota: solo gli utenti di Edge Private Cloud possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza di Apigee Edge.
Diagnosi
- Verifica se i nodi di Cassandra sono stati riavviati durante il deployment.Puoi farlo
controllando il log di Cassandra o i log dell'ora di avvio più recenti del nodo di Cassandra:
grep"shutdown"/opt/apigee/var/log/apigee-cassandra/system.log
Risoluzione
- Assicurati che Cassandra sia attivo e in esecuzione.
- Verifica se i Message Processor sono in grado di connettersi al datastore di Cassandra sulle porte 9042 e 9160.
Picco nella latenza delle richieste di lettura su Cassandra
Un numero elevato di letture su Cassandra dipende dai singoli casi d'uso e dai pattern di traffico sui proxy che contengono criteri che richiedono l'accesso in lettura da Cassandra.
Ad esempio, se viene chiamata una chiamata GET al tipo di concessione refresh_token per i criteri OAuth e il token di aggiornamento è associato a molti token di accesso, ciò potrebbe comportare un numero elevato di letture da Cassandra. Questo può causare un aumento della latenza delle richieste di lettura su Cassandra.
Diagnosi
Nota: solo gli utenti di Edge Private Cloud possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza di Apigee Edge.

- Se hai installato la dashboard di monitoraggio beta, esamina la dashboard di Cassandra e il grafico "Richieste di lettura" per il periodo del problema. Esamina anche il grafico "Latenze delle richieste di lettura"
nodetool cfstatsè uno strumento alternativo per controllare le richieste di lettura e le latenze di lettura. Consulta la documentazione di Cassandra per ulteriori dettagli sull'utilizzo di questo comando.
Risoluzione
Nota: solo gli utenti di Edge Private Cloud possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza di Apigee Edge.
- Riprova a eseguire il deployment una volta che le prestazioni di Cassandra sono tornate alla normalità. Assicurati che l'intero anello di Cassandra sia normale.
- (Facoltativo) Esegui un riavvio in sequenza sui Message Processor per assicurarti che la connettività sia stabilita.
- Per una soluzione a lungo termine, esamina i pattern di traffico API che potrebbero contribuire a un numero maggiore di letture nel datastore di Cassandra. Contatta l'assistenza di Apigee Edge per ricevere assistenza nella risoluzione di questo problema.
- Se i nodi di Cassandra esistenti non sono sufficienti a gestire il traffico in entrata, allora aumenta la capacità hardware o il numero di nodi del datastore di Cassandra in modo appropriato.
Bundle del proxy API di dimensioni superiori a 15 MB
Le dimensioni dei bundle di proxy API sono limitate a 15 MB su Cassandra. Se le dimensioni del bundle del proxy API sono superiori a 15 MB, viene visualizzato l'errore "Error while accessing datastore" (Errore durante l'accesso al datastore) quando tenti di eseguire il deployment del proxy API.
Diagnosi
Nota: solo gli utenti di Edge Private Cloud possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza di Apigee Edge.
- Controlla i log del processore di messaggi
(
/opt/apigee/var/log/edge-message-processor/logs/system.log) e verifica se si sono verificati errori durante il deployment del proxy API specifico. - Se viene visualizzato un errore simile a quello mostrato nella figura seguente, l'errore di deployment
è dovuto al fatto che le dimensioni del bundle del proxy API sono superiori 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>
Risoluzione
Il bundle del proxy API sarà di grandi dimensioni se sono presenti troppi file di risorse. Utilizza le seguenti soluzioni per risolvere il problema:
Soluzione 1: sposta i file di risorse a livello di ambiente o organizzazione
- Sposta tutti i file di risorse, come i file e i moduli di script NodeJS, i file JavaScript e i file JAR, a livello di ambiente o organizzazione. Per ulteriori informazioni sui file di risorse, consulta la documentazione di Edge.
- Esegui il deployment del proxy API e verifica se l'errore scompare.
Se il problema persiste o non puoi spostare i file di risorse a livello di ambiente o organizzazione per qualche motivo, applica la soluzione 2.
Soluzione 2: aumenta le dimensioni del bundle del proxy API su Cassandra
Nota: solo gli utenti di Edge Private Cloud possono eseguire i seguenti passaggi. Se utilizzi Edge Public Cloud, contatta l'assistenza di Apigee Edge.
Segui questi passaggi per aumentare le dimensioni della proprietà di Cassandra thrift frame transport size, che controlla le dimensioni massime del bundle del proxy API consentite in Edge:
- Crea il seguente file, se non esiste:
/opt/apigee/customer/application/cassandra.properties
- Aggiungi la seguente riga al file, sostituendo <size> con l'impostazione delle dimensioni necessaria per
il bundle di grandi dimensioni:
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Riavvia Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Ripeti i passaggi da 1 a 3 su tutti i nodi di Cassandra nel cluster.
Se il problema persiste, contatta l'assistenza di Apigee Edge.