Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe o código de status HTTP 502 com a mensagem "Gateway inválido" como uma resposta para chamadas de API.
O código de status HTTP 502 significa que o cliente não está recebendo uma resposta válida do servidores de back-end que vão atender à solicitação.
Mensagens de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 502 Bad Gateway
Além disso, você poderá encontrar as seguintes mensagens de erro:
<html> <head> <title>Error</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>An error occurred.</h1> <p>Sorry, the page you are looking for is currently unavailable.<br/> Please try again later.</p> </body> </html>
Se o erro vier do servidor de back-end, talvez você veja algo parecido com isto. A mensagem de erro do back-end depende completamente da implementação.
<html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> </body> </html>
Causas possíveis
Estas são algumas das possíveis causas do erro "502 Gateway inválido" para APIs que passam pelo Apigee Edge:
Causa | Descrição | Instruções para solução de problemas aplicáveis |
Não há MPs disponíveis no grupo | Esse erro será observado se todos os MPs no pool estiverem indisponíveis, ou seja, se estiverem inativos ou ocupados e, portanto, não respondem. | Usuários da nuvem privada do Edge |
Configuração de SSL incorreta entre roteadores e MPs | Esse erro será observado se o certificado raiz assinado pela CA do cliente estiver ausente no truststore do roteador do Edge. | Usuários da nuvem privada do Edge |
Erro do servidor de back-end | Esse erro será observado se o servidor de back-end falhar e enviar essa resposta. | Usuários de nuvem pública e privada do Edge |
Causa: nenhum MP está disponível no pool
Esse erro ocorrerá se o Roteador descobrir que todos os processadores de mensagens em uma determinada região/data center estão indisponíveis (por exemplo, se todos estiverem inativos).
O Apigee Edge é configurado de modo que o tráfego de API de entrada (solicitações) em uma determinada região/data center sempre seja roteado dos roteadores para os processadores de mensagens (MPs, na sigla em inglês) na mesma região/data center. Em alguns casos, os componentes do Apigee Edge podem ser configurados em apenas uma região/data center. Em alguns casos, eles podem ser configurados em mais de uma região/data center. Em cada região/data center, haverá dois ou mais roteadores e processadores de mensagens configurados.
Diagnóstico
- Determine as regiões/os data centers em que as solicitações da API estão falhando com o erro 502 Gateway inválido, se houver mais de uma região/data center. Para isso, identifique a região em que os usuários estão observando erros 502 ou verifique os registros de acesso do NGINX no diretório
/opt/apigee/var/log/edge-router/nginx/
em cada um dos roteadores que pertencem a regiões diferentes. - O seguinte erro vai aparecer nos registros de erros do NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_error_log
2019/06/24 15:26:00 [error] 4796#4796: *56357443 no live upstreams while connecting to upstream, client: <Router_IP_address>, server: <HostAlias>, request: "PUT <BasePath> HTTP/1.1", upstream: "http://<ListOfMP-IP_R-MP-Port>/<BasePath>", host: "<HostAlias>"
Cenário 1: todos os processadores de mensagens estão desativados
- Verifique se os processadores de mensagens na região/data center específico estão em execução.
- Se todos os processadores de mensagens estiverem inativos, reinicie-os.
Resolução
Reinicie todos os processadores de mensagens usando o seguinte comando:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Cenário 2: todos os processadores de mensagens estão ocupados processando solicitações em andamento
Esse erro ocorrerá se os roteadores descobrirem que todos os processadores de mensagens em uma determinada região/data center estão indisponíveis, já que estão ocupados processando solicitações em andamento.
- Verifique se os processadores de mensagens na região/data center específico estão em execução.
- Se todos os processadores de mensagens estiverem ativos e ativos, verifique se eles estão apresentando um alto uso da CPU. Em seguida, gere três despejos de linha de execução a cada 30 segundos usando o seguinte comando:
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- Se os processadores de mensagens estiverem apresentando um alto uso de memória, gere um heap dump com o seguinte comando:
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - Reinicie o processador de mensagens usando o comando abaixo. Isso vai desativar a CPU e a memória:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Monitore as chamadas de API para confirmar se o problema ainda existe.
- Entre em contato com o suporte da Apigee e envie os despejos de linha de execução, o heap dump e os registros do processador de mensagens (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) para investigar a causa do alto uso de CPU/memória.
Causa: configuração de SSL incorreta entre roteadores e MPs
Diagnóstico
- Verifique os registros de acesso do NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
). Você verá a resposta 502, conforme mostrado abaixo:_access_log
2019-07-23T12:13:42+03:00 sc-10-254-226-23 10.X.X.X:53634 10.X.X.X:8998 0.000 - - 502 502 189 344 GET <path> curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 <host alias> mp-10-254-226-23-23706-8552529-1 10.129.107.101 - - -1 - - dc-2 gateway-2 green - gateway-2 dc-2 op pilot http -
- Verifique os registros de erro do NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
). Erros como estes:_error_log
2019/07/30 17:02:24 [error] 7691#7691: *11753633 peer closed connection in SSL handshake while SSL handshaking to upstream, client: X.X.X.X, server: <HostAlias>, request: "GET /no-target HTTP/1.1", upstream: "https://X.X.X.X:8998/no-target", host: "<HostAlias>"
- Isso mostra que o handshake de SSL falha entre o roteador e o processador de mensagens.
- Se você perceber cuidadosamente na mensagem de erro nas etapas 1 e 2, o número da porta usada para se comunicar com o processador de mensagens é 8998, que é uma porta não segura, mas o protocolo é SSL (https). Geralmente, o número da porta segura usada é 8443. Como uma porta não segura é usada para uma comunicação segura, ela causa a falha de handshake de SSL.
- Normalmente, isso pode acontecer se você perdeu alguma etapa ou definiu valores incorretos ao configurar o SSL entre o roteador e o processador de mensagens. Consulte as etapas descritas aqui.
Por exemplo, esse erro poderá ocorrer se
- A porta no está especificada como 8998 em vez de 8443 em
/opt/apigee/customer/application/message-processor.properties as shown below
conf/message-processor-communication.properties+local.http.port=8998
- Os arquivos de configuração do roteador no diretório
/opt/nginx/conf.d/*
não serão excluídos, e o roteador não foi reiniciado durante a configuração do SSL. Nesse cenário, o número da porta dos processadores de mensagens permanece 8998 nos arquivos de configuração.
- A porta no está especificada como 8998 em vez de 8443 em
Resolução
- Siga todas as etapas descritas em Configurar TLS entre um roteador e um processador de mensagens (em inglês) corretamente.
- Se o problema persistir, acesse Coletar informações de diagnóstico.
Causa: erro do servidor de back-end
Diagnóstico
- Se o erro ocorrer todas as vezes, será possível capturar o rastreamento da interface das solicitações com falha. Selecione uma solicitação com falha e navegue pelas várias fases no trace. Se você receber a mensagem "502 Gateway inválido" do próprio servidor de back-end, é possível que uma falha tenha acontecido no servidor de back-end.
Rastro mostrando 502 Gateway inválido proveniente do servidor de back-end
- Se o problema for intermitente e não for possível capturar o rastro,
- Se você usa a nuvem pública, use a API Monitoring e verifique os detalhes dos erros 502.
- Se você observar que o código da falha é
messaging.adaptors.http.flow.ErrorResponseCode
e a origem da falha étarget
, o erro é causado pelo servidor de back-end.
- Se você observar que o código da falha é
- Se você for usuário da nuvem privada, poderá analisar os registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
_access_log.
Será exibida a entrada da solicitação com falha da seguinte forma:
2017-02-24T14:42:12+00:00 rt-01 192.8.155.2:18118 192.168.84.166:8998 10.225 - - 502 502 440 0 GET /adv-eadlg-test/documents?type=doctype HTTP/1.1 rt-02efawae234-1234 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 myorg-dev.apigee.net rt-02efawae234-1234 6 - false target messaging.adaptors.http.flow.ErrorResponseCode null/null - /organizations/myorg/environments/dev/apiproxies/api123
- Se você observar que o código da falha é
messaging.adaptors.http.flow.ErrorResponseCode
e a origem da falha étarget
, o erro é causado pelo servidor de back-end.
- Se você observar que o código da falha é
- Se você usa a nuvem pública, use a API Monitoring e verifique os detalhes dos erros 502.
Resolução
- Trabalhe com a equipe do servidor de back-end para corrigir esse problema.
Coletar informações de diagnóstico
- Registros de acesso do NGINX
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_access_log
e registros de erros
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)._error_log - Registros do processador de mensagens
/opt/apigee/var/log/edge-message-processor/logs/system.log
).