Configurei um Load Balancer na AWS que roteia o tráfego para um servidor Apache Ubuntu.
Quando navego até meu URL, às vezes tudo corre bem. Então apertei o botão Atualizar e comecei a receber erros 502 ao baixar alguns arquivos. São arquivos diferentes a cada vez.
Então apertei Atualizar novamente e tudo correu bem.
Atualmente sou o único usando o servidor.
Meu balanceador de carga está configurado assim:
- Zonas de disponibilidade: us-east-1a e us-east-1b
- Grupos de segurança: portas 80 e 443 abertas
- Ouvintes: A porta 80 redireciona para a porta 443, a porta 443 encaminha para meu destino
Meu grupo-alvo está configurado assim:
- Tipo de destino: instância
- Protocolo: HTTP: 80
- Balanceador de carga: nome do meu balanceador de carga
- Registrar alvos: tenho 1 instância em execução em cada zona.
Meu grupo de Auto Scaling está configurado assim:
- Capacidade desejada: 2
- Capacidade mínima: 2
- Capacidade máxima: 5
- Zonas de disponibilidade: us-east-1a, us-east-1b
Meu servidor Apache está configurado com os valores de instalação padrão, mais:
- Manter ativo ativado
- Tempo limite 120
- KeepAliveTimeout 120
- MaxKeepAliveRequests 100
- AceitarFiltro http nenhum
- AcceptFilter https nenhum
Não sou um servidor, sou um programador, então realmente não sei o que verificar. Achei que configurar um balanceador de carga fosse simples ...
Obrigado pela ajuda
EDITAR 2020-08-27 15h39
Habilitei os logs na VPC e no Load Balancer e atualizei minha página. Eu tive um erro 502 em um arquivo específico.
Nos logs do Load Balancer, vejo a entrada 502 para o arquivo específico. Aqui está a entrada - formatada em JSON - na qual substituí todos os dados sensíveis
[
{
"type": "h2",
"time": "2020-08-27T19:20:52.547402Z",
"elb": "app/web-server-load-balancer/**my-load-balancer-id**",
"client:port": "*my-ip-address*:60831",
"target:port": "10.0.0.106:80",
"request_processing_time": 0,
"target_processing_time": 0.013,
"response_processing_time": -1,
"elb_status_code": 502,
"target_status_code": "-",
"received_bytes": 45,
"sent_bytes": 610,
"request": "GET https://**my-url** HTTP/2.0",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
"ssl_cipher": "ECDHE-RSA-AES128-GCM-SHA256",
"ssl_protocol": "TLSv1.2",
"target_group_arn": "**my-target-group-arn**",
"trace_id": "Root=1-5f480794-150df3bcad7fd0ac6bdfc41c",
"domain_name": "**my-domain-name**",
"chosen_cert_arn": "session-reused",
"matched_rule_priority": 0,
"request_creation_time": "2020-08-27T19:20:52.534000Z",
"actions_executed": "forward",
"redirect_url": "-",
"error_reason": "-",
"target:port_list": "10.0.0.106:80",
"target_status_code_list": "-",
"classification": "-",
"classification_reason": "-"
}
]
Não sei se esses dados podem ajudar você a me ajudar!
EDITAR 31/08/2020 (1)
Abri as duas VMs no Firewall para acessá-las diretamente. Quando acesso cada servidor diretamente, não recebo nenhum erro 502. Quando acesso pelo Load balancer, recebo o 502.
EDITAR 31/08/2020 (2)
Alterei meu balanceador de carga para rotear o tráfego HTTP para a instância em vez de redirecioná-lo para a porta 443.
Na porta 80, não recebo erros 502. Atualizei muitas vezes e não obtive 502. Assim que acesso o balanceador de carga com https, começo a receber erros 502. Lembro de você que quando acesso diretamente a VM com https, não recebo 502.
Responder1
Me deparei com esta postagem no fórum: Fórum de desenvolvedores da AWS
A última entrada realmente me deu a resposta:
Certifique-se de não estar usando o módulo MPM de eventos do Apache (padrão) quando estiver atrás de um ALB/ELB. Ele fecha conexões dinamicamente. Experimente o MPM do trabalhador.
Mudei minha configuração do Apache para usar o MPM do trabalhador e, no que diz respeito, não tive nenhum erro 502.
Responder2
Tentei MPMs de trabalho e de evento e nenhum deles eliminou completamente o 502 aleatório. Finalmente mudei para o MPM pré-fork e isso resolveu o problema para mim. Isso está no Apache, no meio entre ALB e Tomcat.