Errore di accesso a Datastore

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Sintomo

Il deployment delle revisioni del proxy API tramite la UI di Edge o la chiamata API di gestione di Edge non riesce con 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:

  1. 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 della rete di connettività o regole firewall. Utenti Edge Private Cloud
    Errori di deployment dovuti a Cassandra riavvii I nodi Cassandra non erano disponibili perché sono stati riavviati come parte della routine manutenzione. Utenti Edge Private Cloud
    Picco di latenza della richiesta di lettura su Cassandra Se i nodi Cassandra eseguono un numero elevato di letture simultanee, potrebbe rispondere lentamente a causa di un picco di latenza delle richieste di lettura. Utenti Edge Private Cloud
    Pacchetto proxy API più grande di 15 MB Cassandra è stata configurata in modo da non consentire bundle proxy API superiori a 15 MB in dimensioni. Utenti Edge Private Cloud

    Problema di connettività di rete tra i messaggi Processore e Cassandra

    Diagnosi

    Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sei su Edge Public Cloud, contatta l'assistenza Apigee Edge.

    1. Annulla il deployment e riesegui il deployment del proxy API. Se si è verificato un problema di connettività temporaneo tra il processore di messaggi e Cassandra, l'errore potrebbe scomparire.

      ATTENZIONE: non annullare il deployment se gli errori vengono rilevati nel completamente gestito di Google Cloud.

    2. Se il problema persiste, esegui la seguente chiamata AP di gestione per verificare lo stato del deployment e verifica se ci sono errori in uno o più componenti:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      Esempio di output dello stato del deployment che mostra Errore durante l'accesso al datastore su uno processori di messaggi

      {
      "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. Riavvia i processori di messaggi che mostrano l'errore di deployment. Se ci fosse un un problema di rete temporaneo, l'errore dovrebbe scomparire:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. Ripeti il passaggio 2 per vedere se il deployment ha esito positivo sul processore di messaggi è stata riavviata. Se non sono stati rilevati errori, significa che il problema è stato risolto.
    5. Controlla se il processore di messaggi è in grado di connettersi a ciascun nodo Cassandra sulla porta 9042 e 9160:
      1. Se telnet è disponibile, utilizza telnet:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
        
      2. Se telnet non è disponibile, utilizza netcat per controllare la connettività come segue:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
        
      3. Se ricevi la risposta "Connessione rifiutata" o "Sessione di connessione scaduta", quindi attiva team delle operazioni di rete.
    6. Se il problema persiste, verifica se ciascuno dei nodi Cassandra è in ascolto sulla Porta 9042 e 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
      
    7. Se i nodi Cassandra non sono in ascolto sulla porta 9042 o 9160, riavvia il nodi Cassandra specifici:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
      
    8. Se il problema persiste, contatta il team delle operazioni di rete.

Risoluzione

Collabora con il team delle operazioni di rete per risolvere il problema di connettività di rete tra processore di messaggi e Cassandra.

Errori di deployment dovuti al riavvio di Cassandra

In genere, i nodi Cassandra vengono riavviati periodicamente nell'ambito della manutenzione di routine. Se API il deployment dei proxy viene eseguito durante le attività di manutenzione di Cassandra, i deployment non vanno a buon fine a causa per l'inaccessibilità al datastore Cassandra.

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

Diagnosi

  1. Controlla se i nodi Cassandra sono stati riavviati durante il deployment.Questa operazione può essere verifica il log di Cassandra o i log dell'ora di avvio più recenti del nodo Cassandra:

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

Risoluzione

  1. Assicurati che Cassandra sia attivo e in esecuzione.
  2. Controlla se i processori di messaggi sono in grado di connettersi al datastore Cassandra sulla porta 9042 e 9160.

Picco di latenza della richiesta di lettura su Cassandra

Un numero elevato di letture su Cassandra dipende da singoli casi d'uso e modelli di traffico sui proxy che contengono criteri che richiedono l'accesso in lettura da Cassandra.

Ad esempio, se viene richiesto un tipo di autorizzazione GET per refresh_token per i criteri OAuth, di aggiornamento del token è associato a molti token di accesso, quindi è possibile che vengano generate legge da Cassandra. Ciò può causare un aumento della latenza delle richieste di lettura su Cassandra.

Diagnosi

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Se hai installato la dashboard di monitoraggio beta, dai un'occhiata alla dashboard di Cassandra consulta la sezione "Richieste di lettura" per il periodo in cui si è verificato il problema. Esamina anche il grafico relativo a "Leggi Latenze di richiesta".
  2. Uno strumento alternativo per verificare le richieste di lettura e le latenze di lettura è il comando nodetool cfstats. Vedi Cassandra documentazione per ulteriori dettagli sull'utilizzo di questo comando.

Risoluzione

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Riprova a eseguire il deployment quando le prestazioni di Cassandra saranno tornate alla normalità. Assicurati che l'intera L'anello di Cassandra è normale.
  2. (Facoltativo) Esegui un riavvio in sequenza sui processori di messaggi per assicurarti che la connettività sia la creazione di un progetto.
  3. Per una soluzione a lungo termine, esamina i pattern di traffico delle API che potrebbero contribuire con letture più elevate nel datastore Cassandra. Contatta l'assistenza Apigee Edge per la risoluzione di questo problema.
  4. Se i nodi Cassandra esistenti non sono adeguati per gestire il traffico in entrata, aumentare la capacità hardware o il numero di nodi di datastore Cassandra in modo appropriato.

API Bundle proxy più grande di 15 MB

Le dimensioni dei bundle proxy API sono limitate a 15 MB su Cassandra. Se le dimensioni dell'API il bundle proxy è superiore a 15 MB, verrà visualizzato il messaggio "Errore durante l'accesso al datastore" quando di eseguire il deployment del proxy API.

Diagnosi

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

  1. Controllare i log del processore di messaggi (/opt/apigee/var/log/edge-message-processor/logs/system.log) e verifica se ci sono che si siano verificati errori durante il deployment del proxy API specifico.
  2. Se viene visualizzato un errore simile a quello mostrato nella figura seguente, l'errore di deployment è che la dimensione del bundle proxy API è > 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 proxy API sarà grande se sono presenti troppi file di risorse. Utilizza quanto segue soluzioni per risolvere questo problema:

Soluzione 1: spostare i file di risorse a livello di ambiente o organizzazione

  1. Spostare i file di risorse, ad esempio file e moduli di script NodeJS, file JavaScript JAR a livello di ambiente o organizzazione. Per ulteriori informazioni sui file di risorse, consulta la documentazione di Edge.
  2. Esegui il deployment del proxy API e controlla se l'errore si risolve.

Se il problema persiste o non puoi spostare i file delle risorse nell'ambiente o nell'organizzazione a livello di progetto per qualche motivo, quindi applica la soluzione n. 2.

Soluzione 2: aumenta le dimensioni del bundle proxy API su Cassandra

Nota: solo gli utenti Edge Private Cloud possono eseguire i seguenti passaggi. Se sono su Edge Public Cloud, contatta l'assistenza Apigee Edge.

Segui questi passaggi per aumentare le dimensioni del frame dell'usato della proprietà Cassandra dimensioni di trasporto, che controllano la dimensione massima del bundle proxy API consentito Edge:

  1. Crea il seguente file, se non esiste:
    /opt/apigee/customer/application/cassandra.properties
    
  2. Aggiungi la seguente riga al file, sostituendo <size> con l'impostazione delle dimensioni necessaria il bundle più grande:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
    
  3. Riavvia Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  4. Ripeti i passaggi da 1 a 3 su tutti i nodi Cassandra nel cluster.

Se il problema persiste, contatta l'assistenza Apigee Edge.