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:
-
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.
- 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.
- 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" }
- 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
- 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.
- 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:
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 "Conexão recusada" ou "Tempo limite de conexão esgotado", entre em contato com sua equipe de operações de rede.
- Se o telnet estiver disponível, use o telnet:
- 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
- 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
- Se o problema persistir, entre em contato com sua equipe de operações de rede.
- 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.
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
- 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
- Verifique se o Cassandra está funcionando.
- 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.
- 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".
- 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.
- Tente realizar 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 contínua 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 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.
- 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.
- 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. - 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
- 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.
- 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:
- Crie o seguinte arquivo, 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.