Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Como fazer com que minhas tarefas do Amazon ECS que usam o tipo de execução do Amazon EC2 passem na verificação de integridade do Application Load Balancer?
Quero solucionar e resolver problemas com as verificações de integridade do Application Load Balancer para tarefas do Amazon Elastic Container Service (Amazon ECS) que são executadas nas minhas instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrição
Quando sua tarefa do Amazon ECS falha na verificação de integridade do balanceador de carga, você recebe uma das seguintes mensagens de erro da mensagem de evento de serviço do Amazon ECS:
- "(service AWS-service) (port 8080) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [502 or 504]) or (request timeout)"
- "(service AWS-Service) (port 8080) is unhealthy in target-group tf-20190411170 due to (reason Health checks failed)"
- "(service AWS-Service) (instance i-1234567890abcdefg) (port 443) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed)"
Também é possível receber a seguinte mensagem de erro do seu console de tarefas do Amazon ECS:
"Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789)"
Para falhas nas verificações de integridade do contêiner, consulte Como solucionar problemas na verificação de integridade de contêiner em tarefas do Amazon ECS?
Para entender por que sua tarefa do Amazon ECS foi interrompida, consulte Visualizar erros de tarefa interrompida do Amazon ECS e Por que minha tarefa do Amazon ECS foi interrompida?
Resolução
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Configure grupos de segurança diferentes
É uma prática recomendada configurar grupos de segurança diferentes para permitir todo o tráfego entre seus balanceadores de carga e instâncias de contêiner ou interface de rede elástica de tarefas. Também é possível configurar suas instâncias de contêiner para aceitar tráfego na porta especificada na tarefa.
Em sua configuração, verifique as seguintes definições:
- O grupo de segurança associado ao seu balanceador de carga permite tráfego de saída para suas instâncias de contêiner ou interface de rede de tarefa na porta registrada. Além disso, permite tráfego de saída para suas instâncias de contêiner na porta de verificação de integridade.
- Permite tráfego de entrada no intervalo de portas do host de tarefas a partir do grupo de segurança associado ao seu balanceador de carga.
Ative a Zona de disponibilidade do seu balanceador de carga
Quando você configura uma Zona de disponibilidade do seu balanceador de carga, o Elastic Load Balancing cria um nó de balanceador de carga nessa Zona de disponibilidade. Se você registrar destinos na Zona de disponibilidade, mas não ativá-la, esses destinos registrados não receberão tráfego. Para obter mais informações, consulte Zonas de disponibilidade e nós de balanceador de carga.
Para identificar as Zonas de disponibilidade para as quais seu balanceador de carga está configurado, conclua as seguintes etapas:
- Abra o console do Amazon EC2.
- No painel de navegação, em Balanceamento de carga, clique em Balanceadores de carga.
- Selecione o balanceador de carga que você está usando para o seu serviço do Amazon ECS.
- Na guia Descrição, é possível ver as Zonas de disponibilidade.
Ou execute o comando describe-load-balancers da AWS CLI:
aws elbv2 describe-load-balancers --load-balancer-arns EXAMPLE-ALB-ARN --query 'LoadBalancers[*].AvailabilityZones[].{Subnet:SubnetId}'
Observação: substitua EXAMPLE-ALB-ARN pelo ARN do seu Application Load Balancer.
Para descobrir as Zonas de disponibilidade para as quais suas instâncias de contêiner estão configuradas, conclua as seguintes etapas:
- Abra o console do Amazon EC2.
- No painel de navegação, em Ajuste de escala automático, clique em Grupos do Auto Scaling.
- Selecione o grupo do Auto Scaling da instância de contêiner associado ao seu cluster.
- Na guia Detalhes, em Rede, verifique se as Zonas de disponibilidade correspondem às Zonas de disponibilidade do seu balanceador de carga.
Ou execute o comando describe-auto-scaling-groups da AWS CLI:
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names EXAMPLE-ASG-NAME --query 'AutoScalingGroups[*].{Subnets:VPCZoneIdentifier}' --output text
Observação: substitua EXAMPLE-ASG-NAME pelo nome do seu grupo do Auto Scaling.
Para modificar as Zonas de disponibilidade do seu cluster, conclua as seguintes etapas:
- Abra o console do AWS CloudFormation.
- Selecione a pilha do CloudFormation do seu cluster.
- Atualize a pilha.
- Na página Especificar detalhes da pilha, atualize sua configuração de IDs de sub-rede.
Para identificar as Zonas de disponibilidade para as quais sua tarefa está configurada, conclua as seguintes etapas:
-
Abra o console do Amazon ECS.
-
No painel de navegação, clique em Clusters e selecione o cluster que contém seu serviço.
-
Na guia Serviços da página do seu cluster, na coluna Nome do serviço, selecione o serviço que você deseja verificar.
-
Clique na guia Configuração e rede.
-
Em Configuração de rede, veja as sub-redes configuradas.
-
Abra o console do Amazon Virtual Private Cloud (Amazon VPC) para ver informações extras que não estão disponíveis no console do ECS.
-
Execute o comando describe-services para verificar se as Zonas de disponibilidade de suas sub-redes correspondem às Zonas de disponibilidade do seu balanceador de carga:
aws ecs describe-services --cluster EXAMPLE-CLUSTER-NAME --service EXAMPLE-SERVICE-NAME --query 'services[*].deployments[].networkConfiguration[].awsvpcConfiguration.{Subnets:subnets}'Observação: substitua EXAMPLE-CLUSTER-NAME pelo nome do seu cluster e EXAMPLE-SERVICE-NAME pelo nome do seu serviço.
Não é possível usar o console do Amazon ECS para alterar a configuração de sub-rede de um serviço do Amazon ECS. Em vez disso, execute o comando update-service da AWS CLI.
Configure sua ACL da rede para permitir o tráfego entre sub-redes
As sub-redes do seu balanceador de carga e da sua instância de contêiner ou da interface de rede de tarefas podem ser diferentes.
Para permitir o tráfego entre as sub-redes, use as seguintes configurações da lista de controle de acesso à rede (ACL da rede):
- A ACL da rede associada às sub-redes do seu balanceador de carga deve permitir tráfego de entrada nas portas temporárias (1024-65535) e na porta do receptor.
- A ACL da rede deve permitir tráfego de saída nas portas temporárias e de verificação de integridade.
- A ACL da rede associada às sub-redes de sua instância de contêiner ou interface de rede de tarefas no awsvpc deve permitir tráfego de entrada na porta de verificação de integridade.
- A ACL da rede deve permitir tráfego de saída nas portas temporárias.
Para obter mais informações sobre ACLs da rede, consulte Controlar o tráfego da sub-rede com listas de controle de acesso à rede.
Verifique as configurações de verificação de integridade do seu grupo de destino
Para verificar se as configurações de verificação de integridade do seu grupo de destino estão definidas corretamente, conclua as seguintes etapas:
- Abra o console do Amazon EC2.
- No painel de navegação, em Balanceamento de carga, clique em Grupos de destino.
- Selecione o seu grupo de destino.
Importante: use um novo grupo de destino. Como o Amazon ECS automaticamente registra e cancela o registro da tarefa do ECS com o grupo de destino, não adicione destinos manualmente ao grupo de destino. - Na guia Verificações de integridade, realize as seguintes ações:
Verifique se você configurou corretamente os campos Porta e Caminho.
Observação: se você não configurar os campos corretamente, o Amazon ECS pode solicitar que seu balanceador de carga cancele o registro da tarefa devido à falha nas verificações de integridade.
Em Porta, selecione porta de tráfego.
Observação: se você selecionar Substituir, confirme se a porta corresponde à porta do host da tarefa.
Em Tempo limite, certifique-se de que o valor do tempo limite de resposta está correto.
Observação: caso o valor seja menor que o tempo necessário para uma resposta, a verificação de integridade falhará.
Verifique o status e a configuração da aplicação em seu contêiner do ECS
Confirme se a aplicação responde à verificação de integridade do seu balanceador de carga
Realize as seguintes ações:
- Verifique se a porta ping e o caminho de verificação de integridade do seu grupo de destino estão configurados corretamente.
- Monitore as métricas de utilização da CPU e da memória do serviço do Amazon ECS. Se sua aplicação estiver lenta ou atingir o tempo limite, aumente as cotas de recursos da tarefa, aumente a escala do serviço horizontalmente, otimize sua aplicação ou use um tipo de instância maior.
- Defina um período mínimo de carência da verificação de integridade, de modo que o agendador de serviços ignore as verificações de integridade por um período predefinido após você iniciar uma tarefa.
Observação: sua tarefa do Amazon ECS pode exigir um período de carência da verificação de integridade mais longo para registrar o Application Load Balancer. - Verifique os logs da sua aplicação em busca de erros. Para obter mais informações, consulte Envio de logs do Amazon ECS para o CloudWatch.
Confirme se a aplicação retorna o código de status correto
Quando o balanceador de carga envia uma solicitação HTTP GET ao caminho da verificação de integridade, a aplicação no seu contêiner do ECS retorna o código de status 200 OK padrão. Se você receber uma mensagem de erro que não seja HTTP, significa que sua aplicação não está recebendo o tráfego HTTP. É possível receber um código de status HTTP diferente do especificado na configuração Matcher. Se você receber outro código de status, sua aplicação está recebendo o tráfego HTTP, mas não está retornando um código de status para um destino íntegro.
Observação: se você usar um Application Load Balancer, é possível atualizar a configuração Matcher para um código de status diferente de 200. Para obter mais informações, consulte Verificações de integridade para grupos de destino do Application Load Balancer.
Para confirmar que a aplicação em seu contêiner do ECS está retornando o código de status correto, conclua as seguintes etapas:
-
Use SSH, Gerenciador de Sessões, um recurso do AWS Systems Manager ou EC2 Instance Connect para se conectar à sua instância de contêiner.
-
(Opcional) Execute o seguinte comando para que seu sistema operacional (SO) instale o curl.
Amazon Linux e outras distribuições baseadas em RPM:sudo yum -y install curlSistemas baseados em Debian, como o Ubuntu:
sudo apt-get install curl -
Execute o seguinte comando para obter o ID do contêiner:
docker psObservação: a porta do receptor local é exibida na saída do comando em PORTS no final da sequência.
-
Se você usar o modo de rede BRIDGE, execute o comando docker inspect para obter o endereço IP do contêiner:
IPADDR=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' 112233445566)Observação: o endereço IP do contêiner está salvo no IPADDR. Substitua 112233445566 pelo número do ID do contêiner da saída do comando docker ps. Se você usa o awsvpc, use o endereço IP da tarefa atribuído à interface de rede de tarefas. Se você usar o modo de rede HOST, use o endereço IP da instância de contêiner do host pelo qual a tarefa está exposta.
-
Para obter o código de status, execute um comando curl que inclua IPADDR e a porta do receptor local:
curl -I http://${IPADDR}:8080/healthObservação: no exemplo de comando anterior, substitua 8080 pela porta do seu receptor.
Verifique o status da sua instância de contêiner
Se você receber a seguinte mensagem de evento do seu evento de serviço do Amazon ECS, verifique o status da sua instância de contêiner:
"(service AWS-Service) (instance i-1234567890abcdefg) (port 443) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed)"
Verifique o status da sua instância de contêiner no console do Amazon EC2. Se sua instância falhar nas verificações de status do sistema, interrompa e inicie sua instância.
Ative temporariamente os logs de acesso do Application Load Balancer
Ative temporariamente os logs de acesso do Application Load Balancer para verificar os seguintes problemas:
- Verifique se o Application Load Balancer está enviando verificações de integridade para o caminho ou porta corretos e se os destinos estão respondendo corretamente.
- Analise os códigos de status HTTP retornados pelos destinos para identificar problemas no nível da aplicação, como rotas mal configuradas ou erros do lado do servidor.
- Verifique se as verificações de integridade atingiram o destino para verificar se há problemas relacionados à rede.
- Verifique se o tempo de resposta excede o tempo limite configurado para a verificação de integridade.
Solucione outras causas
Se a resolução anterior não resolver seu problema, consulte Solução de problemas relacionados aos balanceadores de carga de serviço no Amazon ECS.
Informações relacionadas
Criar um grupo de destino para o Application Load Balancer
Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS
HTTP 504: Gateway timeout (HTTP 504: limite de tempo do gateway)
Como soluciono erros 504 que eu recebo quando uso um Application Load Balancer?
- Tópicos
- Containers
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 8 meses
- feita há 10 meses
- feita há 4 meses