Erro ao acessar o Datastore

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Sintoma

A implantação de revisões de proxy de API via IU do Edge ou chamada de 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

As causas mais comuns desse problema são:

  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 conectividade de rede ou regras de firewall. Usuários da nuvem privada do Edge
    Erros de implantação devido a reinicializações do Cassandra Os nós do Cassandra não estavam disponíveis porque foram reiniciados como parte da manutenção de rotina. Usuários da nuvem privada do Edge
    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, poderão responder lentamente devido ao pico na latência da solicitação de leitura. Usuários da nuvem privada do Edge
    Pacote de proxy de API com mais de 15 MB O Cassandra foi configurado para não permitir pacotes de proxy de API com mais de 15 MB. Usuários da nuvem privada do Edge

    Problema de conectividade de rede entre o processador de mensagens e o Cassandra

    Diagnóstico

    Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

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

      AVISO:não cancele a implantação se os erros forem encontrados no ambiente de produção.

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

      Exemplo de saída de status de implantação mostrando um erro ao acessar o armazenamento 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 houve um problema temporário de rede, ele desaparecerá:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. Repita a etapa 2 para verificar se a implantação foi bem-sucedida no processador de mensagens que foi reiniciado. Se nenhum erro for encontrado, isso indica que o problema foi resolvido.
    5. Verifique se o processador de mensagens consegue se conectar a cada nó do Cassandra nas portas 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 "Conexão recusada" ou "Tempo limite de conexão esgotado", entre em contato com sua equipe de operações de rede.
    6. Se o problema persistir, verifique se cada um dos nós do Cassandra está ouvindo nas 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 ouvindo na porta 9042 ou 9160, reinicie os 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 para corrigir o problema de conectividade de rede entre o processador de mensagens e o Cassandra.

Erros de implantação causados por reinicializações do Cassandra

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

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

Diagnóstico

  1. Verifique se os nós do Cassandra foram reiniciados durante a implantação.Para isso, verifique 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 conseguem se conectar ao repositório de dados do Cassandra nas portas 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 políticas que exigem acesso de leitura do Cassandra.

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

Diagnóstico

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

  1. Se você instalou o painel de monitoramento Beta, confira o painel do Cassandra e analise o gráfico "Solicitações de leitura" para o período do problema. Analise também o gráfico "Latências da solicitação de leitura".
  2. A ferramenta alternativa para verificar as solicitações de leitura e as latências é o comando nodetool cfstats. Consulte a documentação do Cassandra para saber mais detalhes sobre o uso desse comando.

Resolução

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

  1. Tente realizar a implantação novamente quando o desempenho do Cassandra voltar ao normal. Verifique se todo o anel do Cassandra está normal.
  2. (Opcional) Faça uma reinicialização contínua nos processadores de mensagens para garantir que a conectividade seja estabelecida.
  3. Para uma solução de longo prazo, analise os padrões de tráfego da API que poderiam contribuir para leituras maiores no repositório de dados do Cassandra. Entre em contato com o suporte do Apigee Edge para receber ajuda para resolver esse problema.
  4. Se os nós atuais do Cassandra não forem adequados para lidar com o tráfego de entrada, aumente a capacidade de hardware ou o número de nós de armazenamento de dados do Cassandra corretamente.

Pacote de proxy de API com mais de 15 MB

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

Diagnóstico

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

  1. Verifique os registros do processador de mensagens (/opt/apigee/var/log/edge-message-processor/logs/system.log) e veja se ocorreram erros durante a implantação do proxy de API específico.
  2. Se um erro semelhante ao mostrado na figura abaixo for exibido, isso significa que o erro de implantação ocorre porque o tamanho do pacote de proxy de API é maior que 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 do proxy de API vai ser grande se houver muitos arquivos de recursos. Use as seguintes soluções para resolver esse problema:

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

  1. Mova todos os arquivos de recursos, como arquivos e módulos NodeJS, JavaScript e JAR para o nível do ambiente ou da organização. Para mais informações sobre arquivos de recursos, consulte a documentação do Edge.
  2. Implante o proxy de API e veja se o erro desaparece.

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

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

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

Siga estas etapas para aumentar o tamanho do transporte de frames thrift da propriedade Cassandra, que controla o tamanho máximo do pacote de proxy de API permitido no Edge:

  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> pela configuração de tamanho necessária para 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 de 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.