Como resolvo erros HTTP 504 no Amazon EKS?
Recebo erros de HTTP 504 (tempo limite do gateway) quando me conecto a um Kubernetes Service executado no meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
Você recebe erros HTTP 504 ao se conectar a um pod do Kubernetes Service localizado em um cluster do Amazon EKS configurado para um balanceador de carga.
Para resolver erros de HTTP 503, consulte How do I resolve HTTP 503 (Service unavailable) errors when I access a Kubernetes Service in an Amazon EKS cluster? (Como resolvo erros de HTTP 503 (serviço indisponível)) ao acessar um Kubernetes Service em um cluster do Amazon EKS?
Para resolver erros HTTP 504, conclua as etapas de solução de problemas a seguir.
Resolução
Verifique se o tempo limite de inatividade do seu balanceador de carga está definido corretamente
O balanceador de carga estabeleceu uma conexão com o destino, mas o destino não respondeu antes que o tempo limite de inatividade terminasse. Por padrão, o tempo limite de inatividade do Classic Load Balancer e do Application Load Balancer é de 60 segundos.
1. Analise as métricas do Amazon CloudWatch para seu Classic Load Balancer ou Application Load Balancer.
Observação: pelo menos uma solicitação atingiu o tempo limite quando:
- Os pontos de dados de latência são iguais ao valor de tempo limite do balanceador de carga atualmente configurado.
- Há pontos de dados na métrica HTTPCode_ELB_5XX.
2. Modifique o tempo limite de inatividade do seu balanceador de carga para que a solicitação HTTP possa ser concluída dentro do período de tempo limite de inatividade. Ou configure sua aplicação para responder mais rápido.
Para modificar o tempo limite de inatividade do Classic Load Balancer, atualize a definição do serviço para incluir a anotação service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout.
Para modificar o tempo limite de inatividade do Application Load Balancer, atualize a definição de entrada para incluir a anotação alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds.
Verifique se suas instâncias de back-end não têm erros de conexão de back-end
Se uma instância de back-end fechar uma conexão TCP antes de atingir o valor de tempo limite de inatividade, o balanceador de carga não atenderá à solicitação.
1. Analise as métricas do CloudWatch BackendConnectionErrors para seu Classic Load Balancer e as do TargetConnectionErrorCount do grupo de destino para seu Application Load Balancer.
2. Ative as configurações de manutenção de atividade em seu nó de processamento ou pods de back-end e defina o tempo limite de manutenção de atividade para um valor maior que o tempo limite de inatividade do balanceador de carga.
Para ver se o tempo limite de manutenção de atividade é menor que o tempo limite de inatividade, verifique o valor de manutenção de atividade em seus pods ou nó de processamento. Veja o exemplo a seguir para pods e nós.
Para pods:
$ kubectl exec your-pod-name -- sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
Para nós:
$ sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
Saída:
net.ipv4.tcp_keepalive_time = 7200 net.ipv4.tcp_keepalive_intvl = 75 net.ipv4.tcp_keepalive_probes = 9
Verifique se seus destinos de back-end podem receber tráfego do balanceador de carga no intervalo de portas efêmeras
A lista de controle de acesso à rede (ACL) da sub-rede não permite tráfego dos destinos para os nós do balanceador de carga nas portas temporárias (1024-65535).
Você deve configurar grupos de segurança e ACLs de rede para permitir que os dados se movam entre o balanceador de carga e os destinos de back-end. Por exemplo, dependendo do tipo de balanceador de carga, esses destinos podem ser endereços IP ou instâncias.
Você deve configurar os grupos de segurança para acesso às portas efêmeras. Para fazer isso, conecte a regra de saída do grupo de segurança dos seus nós e pods ao grupo de segurança do seu balanceador de carga. Para mais informações, consulte Grupos de segurança para sua Amazon Virtual Private Cloud (Amazon VPC) e Adicionar e excluir regras.
Informações relacionadas
HTTP 504: Tempo limite do gateway
Monitore seu Classic Load Balancer
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos