Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
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 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ê pode observar 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, você poderá ver algo assim. A mensagem de erro do back-end depende totalmente 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
Confira algumas possíveis causas que podem levar ao erro de gateway incorreto 502 para APIs que passam pelo Apigee Edge:
| Causa | Descrição | Instruções de solução de problemas aplicáveis a |
| Nenhum MP disponível no pool | Esse erro é observado se todos os MPs no pool estiverem indisponíveis, ou seja, inativos ou ocupados e, portanto, não respondendo. | Usuários da nuvem privada do Edge |
| Configuração 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 em uma determinada região/data center estão indisponíveis (por exemplo, se estiverem inativos).
O Apigee Edge é configurado de forma que o tráfego de API (solicitações) recebido em uma determinada região/data center seja sempre encaminhado 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 de gateway incorreto 502, 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 pertencentes a diferentes regiões. - O seguinte erro será exibido 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>"
Situação 1: todos os processadores de mensagens estão inativos
- Verifique se os processadores de mensagens na região/data center específica estão ativos e em execução.
- Se todos os processadores de mensagens estiverem inativos, reinicie-os.
Resolução
Reinicie todos os processadores de mensagens usando o comando a seguir:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Situação 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 porque estão ocupados processando solicitações em andamento.
- Verifique se os processadores de mensagens na região/data center específica estão ativos e em execução.
- Se todos os processadores de mensagens estiverem ativos, verifique se eles estão com uso alto da CPU e gere três despejos de linhas de execução a cada 30 segundos usando o comando a seguir:
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- Se os processadores de mensagens estiverem com uso alto de memória, gere um despejo de heap usando o comando a seguir:
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - Reinicie o processador de mensagens usando o comando abaixo. Ele deve 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 existe.
- Entre em contato com o suporte do Apigee e forneça os despejos de linhas de execução, o despejo de heap e os registros do processador de mensagens (
/opt/apigee/var/log/edge-message-processor/logs/system.log) para ajudar a investigar a causa do uso alto 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, 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 erros do NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.). Você verá erros como este:_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 com atenção a mensagem de erro nas etapas 1 e 2, a porta usada para se comunicar com o processador de mensagens é 8998, que é uma porta não segura, mas o protocolo é SSL (https). Normalmente, a porta segura usada é 8443. Como uma porta não segura é usada para comunicação segura, isso causa a falha no 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 pode ocorrer se
- O número da porta for 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 forem excluídos e o roteador não tiver sido reiniciado ao fazer a configuração SSL. Nesse cenário, você pode notar que o número da porta dos processadores de mensagens permanecerá 8998 nos arquivos de configuração.
- O número da porta for especificado como 8998 em vez de 8443 em
Resolução
- Confira se 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 sempre, capture o rastreamento da interface para as solicitações com falha. Selecione uma solicitação com falha e navegue por várias fases no rastreamento. Se você receber o "gateway incorreto 502" do próprio servidor de back-end, o problema poderá ser causado por alguma falha no servidor de back-end.
Rastreamento mostrando o gateway incorreto 502 vindo do servidor de back-end
- Se o problema for intermitente e você não conseguir capturar o rastreamento,
- Se você for um usuário da nuvem pública, use o monitoramento de API e verifique os detalhes sobre os erros 502.
- Se o código de falha for
messaging.adaptors.http.flow.ErrorResponseCodee a origem da falha fortarget, o erro será causado pelo servidor de back-end.
- Se o código de falha for
- Se você for um usuário da nuvem privada, analise os registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ORG-Env._access_log.
A entrada da solicitação com falha será exibida 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 o código de falha for
messaging.adaptors.http.flow.ErrorResponseCodee a origem da falha fortarget, o erro será causado pelo servidor de back-end.
- Se o código de falha for
- Se você for um usuário da nuvem pública, use o monitoramento de API e verifique os detalhes sobre os 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 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).