Erro ao acessar o Datastore

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Sintoma

A implantação de revisões do proxy de API pela IU do Edge ou a chamada da API de gerenciamento do Edge falha com o erro "Error while accessing datastore".

Mensagens de erro

Error in deployment for environment qa.

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

Causas possíveis

Estas são as causas mais comuns desse problema:

  1. Causa Detalhes Para
    Problema de conectividade de rede entre o processador de mensagens e o Cassandra Falha de comunicação entre o processador de mensagens e o Cassandra devido a problemas de problemas de conectividade ou regras de firewall. Usuários da nuvem privada de borda
    Erros de implantação devido ao Cassandra reinicializações Os nós do Cassandra não estavam disponíveis porque foram reiniciados como parte da rotina manutenção. Usuários da nuvem privada de borda
    Pico na latência da solicitação de leitura no Cassandra Se os nós do Cassandra estiverem executando um grande número de leituras simultâneas, ele pode responder lentamente devido ao pico na latência das solicitações de leitura. Usuários da nuvem privada de borda
    Pacote de proxy de API com mais de 15 MB O Cassandra foi configurado para não permitir pacotes de proxy de API maiores que 15 MB em tamanho. Usuários da nuvem privada de borda

    Problema de conectividade de rede entre as mensagens Processador e Cassandra

    Diagnóstico

    Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

    1. Cancele a implantação e reimplante o proxy de API. Se houve um problema temporário de conectividade entre o processador de mensagens e o Cassandra, o erro pode desaparecer.

      AVISO:não cancele a implantação se os erros forem exibidos na produção de nuvem.

    2. Se o problema persistir, execute a chamada de AP de gerenciamento abaixo para verificar o o status da implantação e verifique se há erros nos componentes:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      Exemplo de saída do status de implantação mostrando um erro ao acessar o repositório de dados em um dos processadores de mensagens

      {
      "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. Reinicie os processadores de mensagens que mostram o erro de implantação. Se houvesse um problema temporário de rede, o erro deverá desaparecer:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. Repita a etapa 2 para ver se a implantação teve êxito no processador de mensagens que foi reiniciada. Se nenhum erro for encontrado, isso indica que o problema foi resolvido.
    5. Verifique se o processador de mensagens pode se conectar a cada nó do Cassandra na porta 9042 e 9160:
      1. Se o telnet estiver disponível, use o telnet:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
        
      2. Se o telnet não estiver disponível, use o netcat para verificar a conectividade da seguinte maneira:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
        
      3. Se você receber a resposta "Connection Refused" ou "O tempo limite de conexão expirou", então sua equipe de operações de rede.
    6. Se o problema persistir, verifique se cada um dos nós do Cassandra está detectando no portas 9042 e 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
      
    7. Se os nós do Cassandra não estiverem escutando nas portas 9042 ou 9160, reinicie o nós específicos do Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
      
    8. Se o problema persistir, entre em contato com sua equipe de operações de rede.

Resolução

Trabalhe com sua equipe de operações de rede e resolva o problema de conectividade de rede entre Processador de mensagens e Cassandra.

Erros de implantação devido a reinicializações do Cassandra

Os nós do Cassandra geralmente são reiniciados periodicamente como parte da manutenção de rotina. Se a API proxies são implantados durante o trabalho de manutenção do Cassandra, e as implantações falharão devido inacessibilidade ao repositório de dados do Cassandra.

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

Diagnóstico

  1. Verifique se os nós do Cassandra foram reiniciados durante o tempo da implantação.Isso pode ser faça isso verificando o registro do Cassandra ou os registros de tempo de inicialização mais recentes do nó do Cassandra:

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

Resolução

  1. Verifique se o Cassandra está funcionando.
  2. Verifique se os processadores de mensagens podem se conectar ao repositório de dados do Cassandra na porta 9042 e 9160.

Pico na latência da solicitação de leitura no Cassandra

Um alto número de leituras no Cassandra depende de casos de uso individuais e padrões de tráfego nos proxies que contêm as políticas que exigem acesso de leitura do Cassandra.

Por exemplo, se uma chamada GET para o tipo de concessão refresh_token for chamada para políticas OAuth, e a token de atualização está associado a muitos tokens de acesso, o que pode resultar em grandes quantidades do Cassandra. Isso pode aumentar a latência da solicitação de leitura no Cassandra.

Diagnóstico

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

  1. Se você tiver instalado o painel do Monitoring Beta, observe o painel do Cassandra e consulte as "Solicitações de leitura" um gráfico para o período do problema. Analise também o gráfico para "Ler Latências da solicitação".
  2. Uma ferramenta alternativa para verificar as solicitações de leitura e as latências de leitura é o comando nodetool cfstats. Consulte Cassandra documentação para saber mais detalhes sobre como usar esse comando.

Resolução

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

  1. Tente implantar novamente quando o desempenho do Cassandra voltar ao normal. Certifique-se de que O anel do Cassandra é normal.
  2. (Opcional) Faça uma reinicialização gradual nos processadores de mensagens para garantir que a conectividade esteja estabelecidos.
  3. Para uma solução de longo prazo, revise os padrões de tráfego da API que poderiam contribuir leituras mais altas no armazenamento de dados do Cassandra. Entre em contato com o suporte do Apigee Edge para solucionar esse problema.
  4. Se os nós do Cassandra atuais não forem adequados para lidar com o tráfego de entrada, aumente a capacidade do hardware ou o número de nós do armazenamento de dados do Cassandra adequadamente.

API Pacote de proxy com mais de 15 MB

O tamanho dos pacotes de proxy de API está restrito a 15 MB no Cassandra. Se o tamanho da API pacote de proxy for maior do que 15 MB, você verá a mensagem "Erro ao acessar o repositório de dados" quando você para implantar o proxy de API.

Diagnóstico

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

  1. Verificar os registros do processador de mensagens (/opt/apigee/var/log/edge-message-processor/logs/system.log) e verificar se há Ocorreu um erro durante a implantação do proxy de API específico.
  2. Se ocorrer um erro semelhante ao mostrado na figura abaixo, o erro de implantação é porque o tamanho do pacote do proxy de API é maior 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>
    

Resolução

O pacote de proxy de API será grande se houver muitos arquivos de recursos. Use o seguinte soluções para resolver esse problema:

Solução 1: mover os arquivos de recursos para o nível do ambiente ou da organização

  1. Mova qualquer um dos arquivos de recursos, como arquivos e módulos de script NodeJS, arquivos JavaScript, JAR no nível do ambiente ou da organização. Para mais informações sobre arquivos de recursos, consulte a documentação do Edge (em inglês).
  2. Implante o proxy de API e verifique se o erro desaparece.

Se o problema persistir ou se não for possível mover os arquivos de recursos para o ambiente ou a organização nível 2 por algum motivo e, em seguida, aplique a solução no 2.

Solução 2: aumentar o tamanho do pacote do proxy de API no Cassandra

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

Siga estas etapas para aumentar o tamanho do quadro de desconto da propriedade do Cassandra". transporte size, que controla o tamanho máximo do pacote de proxy de API permitido em Borda:

  1. Crie o seguinte arquivo, se ele não existir:
    /opt/apigee/customer/application/cassandra.properties
    
  2. Adicione a seguinte linha ao arquivo, substituindo <size> com a configuração de tamanho necessária o pacote grande:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
    
  3. Reinicie o Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  4. Repita as etapas 1 a 3 em todos os nós do Cassandra no cluster.

Se o problema persistir, entre em contato com o suporte do Apigee Edge.