Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Sintoma
A implantação de revisões de proxy de API pela interface do Edge ou pela 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 típicas desse problema são:
-
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 estavam indisponíveis porque foram reiniciados como parte da manutenção de rotina. Usuários da nuvem privada do Edge Pico na latência de solicitação de leitura no Cassandra Se os nós do Cassandra estiverem executando um grande número de leituras simultâneas, eles poderão responder lentamente devido ao pico na latência de solicitação de leitura. Usuários da nuvem privada do Edge Pacote de proxy de API maior que 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 do Edge Problema de conectividade de rede entre o processador de mensagens e o Cassandra
Diagnóstico
Observação:somente os 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.
- Cancele a implantação e reimplemente o proxy de API. Se houver um problema de conectividade temporário
entre o processador de mensagens e o Cassandra, o erro poderá desaparecer.
AVISO:não cancele a implantação se os erros forem encontrados no ambiente de produção.
- Se o problema persistir, execute a chamada da API 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 do status de implantação mostrando o 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" }
- Reinicie os processadores de mensagens que mostram o erro de implantação. Se houver um
problema de rede temporário, o erro vai desaparecer:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Repita a etapa 2 para conferir 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.
- Verifique se o processador de mensagens consegue se conectar a cada nó do Cassandra nas portas 9042
e 9160:
- Se o telnet estiver disponível, use-o:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- 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
- Se você receber a resposta "Connection Refused" ou "Connection timed out", entre em contato com sua equipe de operações de rede.
- Se o telnet estiver disponível, use-o:
- Se o problema persistir, verifique se cada um dos nós do Cassandra está escutando na
porta 9042 e na porta 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Se os nós do Cassandra não estiverem escutando na porta 9042 ou 9160, reinicie os
nós específicos do Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Se o problema persistir, entre em contato com sua equipe de operações de rede.
- Cancele a implantação e reimplemente o proxy de API. Se houver um problema de conectividade temporário
entre o processador de mensagens e o Cassandra, o erro poderá desaparecer.
Resolução
Trabalhe com sua equipe de operações de rede e corrija o problema de conectividade de rede entre o processador de mensagens e o 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 os proxies de API forem implantados durante o trabalho de manutenção do Cassandra, as implantações vão falhar devido à inacessibilidade ao armazenamento de dados do Cassandra.
Observação:somente os 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
- Verifique se os nós do Cassandra foram reiniciados durante a implantação.Isso pode ser
feito 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
- Verifique se o Cassandra está em execução.
- Verifique se os processadores de mensagens conseguem se conectar ao armazenamento de dados do Cassandra nas portas 9042 e 9160.
Pico na latência de solicitação de leitura no Cassandra
Um grande 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 refresh_token for chamada para políticas 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 um aumento na latência de solicitação de leitura no Cassandra.
Diagnóstico
Observação:somente os 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.

- Se você instalou o painel de monitoramento Beta, consulte o painel do Cassandra e analise o gráfico "Read Requests" para o período do problema. Analise também o gráfico de "Read Request Latencies".
- Uma ferramenta alternativa para verificar as solicitações de leitura e as latências de leitura é o
nodetool cfstatscomando. Consulte a documentação do Cassandra para mais detalhes sobre como usar esse comando.
Resolução
Observação:somente os 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.
- Tente a implantação novamente quando o desempenho do Cassandra voltar ao normal. Verifique se todo o anel do Cassandra está normal.
- (Opcional) Faça uma reinicialização gradual nos processadores de mensagens para garantir que a conectividade seja estabelecida.
- Para uma solução de longo prazo, analise os padrões de tráfego da API que possivelmente contribuem para leituras mais altas no armazenamento de dados do Cassandra. Entre em contato com o suporte do Apigee Edge para receber ajuda na solução desse problema.
- Se os nós do Cassandra atuais não forem adequados para processar o tráfego de entrada, então aumente a capacidade de hardware ou o número de nós do armazenamento de dados do Cassandra de maneira adequada.
Pacote de proxy de API maior que 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, você vai receber a mensagem "Error while accessing datastore" ao tentar implantar o proxy de API.
Diagnóstico
Observação:somente os 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.
- Verifique os registros do processador de mensagens
(
/opt/apigee/var/log/edge-message-processor/logs/system.log) e confira se ocorreram erros durante a implantação do proxy de API específico. - Se você encontrar um erro semelhante ao mostrado na figura abaixo, o erro de implantação
é 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 de proxy de API será grande se houver muitos arquivos de recursos. Use as soluções a seguir para resolver esse problema:
Solução 1: mover arquivos de recursos para o nível do ambiente ou da organização
- Mova qualquer um dos arquivos de recursos, como arquivos e módulos de script do NodeJS, arquivos JavaScript, arquivos 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.
- Implante o proxy de API e confira se o erro desaparece.
Se o problema persistir ou você não conseguir mover os arquivos de recursos para o nível do ambiente ou da organização por algum motivo, aplique a solução 2.
Solução 2: aumentar o tamanho do pacote de proxy de API no Cassandra
Observação:somente os 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 da propriedade do Cassandra thrift frame transport size, que controla o tamanho máximo do pacote de proxy de API permitido no Edge:
- Crie o arquivo a seguir, se ele não existir:
/opt/apigee/customer/application/cassandra.properties
- 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>
- Reinicie o Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 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.