Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe um código de status HTTP 502 com a mensagem "Bad Gateway" como resposta para chamadas de API.
O código de status HTTP 502 significa que o cliente não está recebendo uma resposta válida dos servidores de back-end que deveriam realmente atender à solicitação.
Mensagens de erro
O aplicativo cliente recebe este código de resposta:
HTTP/1.1 502 Bad Gateway
Além disso, talvez você veja 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 assim. A mensagem de erro do back-end depende completamente da implementação dele.
<html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> </body> </html>
Causas possíveis
Confira algumas causas que podem levar ao erro 502 Bad Gateway para APIs que passam pelo Apigee Edge:
Causa | Descrição | Instruções de solução de problemas aplicáveis a |
Não há MPs disponíveis no pool | Esse erro é observado se todos os MPs do grupo estiverem indisponíveis, ou seja, se estiverem inativos ou ocupados e, portanto, não estão respondendo. | Usuários da nuvem privada do Edge |
Configuração de SSL incorreta entre roteadores e MPs | Esse erro é 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 da nuvem pública e privada do Edge |
Causa: nenhum MP disponível no pool
Esse erro ocorrerá se o roteador descobrir que todos os processadores de mensagens de 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 (solicitações) de API de entrada em uma determinada região/data center seja sempre roteado dos roteadores para os processadores de mensagens (MPs) na mesma região/data center. Em alguns casos, os componentes do Apigee Edge podem ser configurados em apenas uma região/data center e, em alguns casos, 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/data centers em que as solicitações de API estão falhando com o erro 502 Bad Gateway, se houver mais de uma região/data center. Para encontrar esse código, 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 diferentes regiões. - Você verá o seguinte erro nos registros de erro 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 inativos
- Verifique se os processadores de mensagens da região/data center específicos 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
Este erro ocorrerá se os roteadores descobrirem que todos os processadores de mensagens em uma determinada região/data center estão indisponíveis, pois todos estão ocupados processando solicitações em andamento.
- Verifique se os processadores de mensagens da região/data center específicos estão em execução.
- Se todos os processadores de mensagens estiverem ativos e ativos, verifique se eles estão com alto uso de 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 o processador de mensagens estiver com alto uso de memória, gere um heap dump com este comando:
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - Reinicie o processador de mensagens usando o comando abaixo. Isso vai reduzir 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 persiste.
- Entre em contato com o suporte da Apigee e envie os registros de Thread dumps, heap dump e 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 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, como 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.
). Você verá 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ê observar 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). Normalmente, o número da porta segura usada é 8443. Como uma porta não segura é usada para comunicação segura, ela causa a falha de handshake de SSL.
- Normalmente, isso pode acontecer se você tiver esquecido alguma etapa ou tiver definido valores incorretos ao configurar o SSL entre o roteador e o processador de mensagens. Consulte as etapas descritas aqui.
Por exemplo, este erro poderá ocorrer se
- O número da porta é especificado 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 foram excluídos e o roteador não foi reiniciado durante a configuração SSL. Neste cenário, observe que o número da porta dos processadores de mensagens permanecerá como 8998 nos arquivos de configuração.
- O número da porta é especificado como 8998 em vez de 8443 em
Resolução
- Certifique-se de que todas as etapas fornecidas em Como configurar o TLS entre um roteador e um processador de mensagens foram seguidas 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 rastro da interface das solicitações com falha. Selecione uma solicitação com falha e navegue pelas várias fases no rastro. Se você perceber que recebeu o erro "502 Bad Gateway" do próprio servidor de back-end, talvez o problema tenha acontecido porque alguma falha pode ter acontecido no servidor de back-end.
Rastreamento mostrando 502 gateway inválido vindo do servidor de back-end
- Se o problema for intermitente e não for possível capturar o rastro,
- Se você é um usuário de nuvem pública, use o API Monitoring e verifique os detalhes dos erros 502.
- Se você observar que o código de 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 de falha é
- Se você for um usuário da nuvem privada, poderá analisar os registros de acesso do NGINX.
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
_access_log.
Você verá a entrada da solicitação com falha da seguinte maneira:
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 de 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 de falha é
- Se você é um usuário de nuvem pública, use o API Monitoring e verifique os detalhes dos erros 502.
Resolução
- Trabalhe com a equipe do servidor de back-end para corrigir esse problema no back-end.
Coletar informações de diagnóstico
- Registros de acesso do NGINX
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_access_log
e 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
).