Ir para o conteúdo

Como soluciono falhas de verificação de integridade do Network Load Balancer para tarefas do Amazon ECS no Fargate?

8 minuto de leitura
0

Eu recebo falhas na verificação de integridade do Network Load Balancer quando executo tarefas do Amazon Elastic Container Service (Amazon ECS) no AWS Fargate.

Breve descrição

Para verificações de integridade de HTTP e HTTPS, consulte Como soluciono falhas de verificação de integridade do Application Load Balancer para tarefas do Amazon ECS no Fargate?

Quando as tarefas do Amazon ECS falham em uma verificação de integridade do Network Load Balancer, você recebe erros em suas mensagens de eventos de serviço que são semelhantes aos exemplos a seguir:

  • “Erro de falha nas verificações de saúde - (serviço AWS-Service) (porta 80) não está íntegro em (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) devido a (motivo pelo qual as verificações de integridade falharam)”
  • “O destino está em uma zona de disponibilidade que não está ativada devido ao erro do balanceador de carga - (serviço AWS-service) (porta 80) não está íntegro em (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) devido ao (motivo pelo qual o Destino está em uma zona de disponibilidade que não está ativada para o balanceador de carga)”
  • “As solicitações de verificação de integridade estão atingindo o tempo limite - (serviço AWS-Service) (porta 8443) não está íntegro em (grupo de destino arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) devido a (motivo Tempo limite da solicitação).”

Se você receber falhas na verificação de integridade do contêiner, consulte Como solucionar problemas na verificação de integridade de contêiner em tarefas do Amazon ECS?

Se suas tarefas do Amazon ECS forem interrompidas, consulte Visualizar erros de tarefa interrompida do Amazon ECS.

Resolução

Observação: se você receber erros 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.

As verificações de integridade falharam

Para solucionar falhas na verificação de integridade do balanceador de carga em suas tarefas do Fargate, execute as seguintes ações.

Verifique a conectividade entre seu balanceador de carga e a tarefa do Amazon ECS

Para permitir que o balanceador de carga realize verificações de integridade em suas tarefas do Amazon ECS, confirme as seguintes configurações:

  • Se seu contêiner estiver mapeado para a porta 80, seu grupo de segurança de tarefas permitirá tráfego de entrada na porta 80.
  • A aplicação pode ser executada na porta mapeada para a instância do contêiner na definição da tarefa.
  • O grupo de segurança da interface de rede elástica permite tráfego na faixa CIDR da Amazon Virtual Private Cloud (Amazon VPC). Para mais informações, consulte Grupos de segurança de destino.
  • As regras do grupo de segurança do Network Load Balancer permitem o tráfego de saída para o grupo de segurança de serviços do Amazon ECS na porta de contêiner necessária.
  • As listas de controle de acesso à rede (ACL de rede) das sub-redes da interface de rede da sua tarefa permitem tráfego de entrada na porta de verificação de integridade.
  • A ACL de rede permite tráfego de saída nas portas efêmeras.

Confirme se suas tarefas respondem corretamente às verificações manuais em sua conexão da Amazon VPC

Confirme se suas tarefas de instância do Amazon Elastic Compute Cloud (Amazon EC2) em sua VPC respondem corretamente às verificações manuais.

Observação: é possível criar um cluster para o tipo de inicialização do Amazon EC2 ou executar uma nova instância do Amazon EC2. Se você não quiser executar uma instância do Amazon EC2, é possível usar ECS Exec.

Para verificar sua resposta à tarefa, use SSH para se conectar a uma instância do EC2 dentro da sua conexão da Amazon VPC. Em seguida, execute um dos comandos a seguir para testar a configuração do seu grupo de destino.

Verificações de integridade HTTP:

curl -Iv http://example-task-private-ip:example-port/healthcheck_path

Observação: substitua example-task-private-ip pelo endereço IP da tarefa e example-port pela sua porta. A saída do comando mostra os códigos de status aprovados na faixa de 200-399 para configurações de verificação de integridade HTTP no grupo de destino.

Exemplo de saída:

HTTP/1.1 200 OK

Verificações de integridade do TCP que não usam SSL com os destinos:

nc -z -v -w10 example-task-private-ip example-port

Observação: substitua example-task-private-ip pelo endereço IP da tarefa e example-port pela sua porta.

Exemplo de saída:

nc -z -v -w10 10.x.x.x 80Connection to 10.x.x.x port 80 [tcp/http] succeeded!

Verificações de integridade de TCP que exigem SSL para verificações de integridade de back-end:

nc -z -v -w10 --ssl example-task-private-ip example-port

Observação: substitua example-task-private-ip pelo endereço IP da tarefa e example-port pela sua porta.

Exemplo de saída:

nc -z -v -w10 10.x.x.x 443Connection to 10.x.x.x port 443 [tcp/https] succeeded!

Verifique o status e a configuração da aplicação em sua instância de contêiner do Amazon ECS

Execute as seguintes ações:

  • Verifique se a porta de ping e o caminho de verificação de integridade do seu grupo de destino foram configurados corretamente.
  • Monitore as métricas de uso de CPU e memória do seu serviço quanto ao alto consumo de recursos que faz com que a aplicação não responda às solicitações de verificação de integridade.

Se sua tarefa precisar de um período de carência de verificação de integridade mais longo, execute o seguinte comando update-service AWS CLI para aumentar healthCheckGracePeriodSeconds:

aws ecs update-service --cluster example-cluster --service example-service --region example-region --health-check-grace-period-seconds example-value --force-new-deployment

Observação: substitua example-cluster pelo nome do cluster, example-service pelo nome do serviço, example-region pela sua região AWS e example-value pelo período de carência da verificação de integridade em segundos.

Verifique se os destinos do seu grupo de destino apresentam falha nas verificações de integridade porque demoram mais para responder do que o período de tempo limite padrão. Para resolver esse problema, execute o seguinte comando modify-target-group para aumentar o tempo limite do grupo de destino em segundos:

aws elbv2 modify-target-group --target-group-arn Target-Group-ARN --health-check-timeout-seconds Timeout-Value

Observação: substitua Target-Group-ARN pelo ARN do seu grupo de destino e Timeout-Value pelo valor do tempo limite do seu grupo em segundos.

Verifique se há erros nos logs da aplicação.

Certifique-se de que o código de resposta que sua aplicação envia em HealthCheckPath corresponda ao código de resposta nos parâmetros de verificação de integridade do seu grupo de destino. Se você configurou o registro de acesso em log na sua aplicação, use a palavra-chave ELB-HealthChecker/2.0 para verificar a resposta registrada. Se você estiver usando Amazon CloudWatch Logs, use CloudWatch Logs Insights e execute a seguinte consulta:

fields @timestamp, @message| sort @timestamp desc
| filter @message like /ELB-HealthChecker/

A saída da consulta mostra as solicitações de verificação de integridade enviadas pelo Network Load Balancer, o código de resposta e os erros.

O destino está em uma zona de disponibilidade que não está ativada para o balanceador de carga

Se você registrar destinos em uma zona de disponibilidade, deverá ativar essa zona de disponibilidade para que os destinos registrados recebam tráfego.

Importante: não é possível desativar as zonas de disponibilidade de um Network Load Balancer depois de criar o balanceador de carga. No entanto, é possível ativar as demais zonas de disponibilidade.

Para identificar as zonas de disponibilidade para as quais seu balanceador de carga está configurado, execute o seguinte comando describe-load-balancers:

aws elbv2 describe-load-balancers --load-balancer-arn example-arn-load-balancer --region example-region --query "LoadBalancers[].AvailabilityZones[].ZoneName"

Observação: substitua example-arn-load-balancer pelo ARN do balanceador de carga e example-region pela sua região.

Para identificar as zonas de disponibilidade para as quais sua tarefa do Fargate está configurada, execute o seguinte comando describe-services:

aws ecs describe-services --cluster example-cluster-name --services example-service-name --region example-region --query "services[].networkConfiguration.awsvpcConfiguration.subnets"

Observação: substitua example-cluster-name pelo nome do seu cluster, example-service-name pelo nome do seu serviço e example-region pela sua região. A saída do comando mostra os IDs das sub-redes em seu serviço.

Para identificar as zonas de disponibilidade das sub-redes da sua tarefa, execute o seguinte comando describe-subnets:

aws ec2 describe-subnets --subnet-ids example-subnet-ids --region example-region --query "Subnets[].AvailabilityZone"

Observação: substitua example-subnet-ids por seu ID de sub-rede e example-region pela sua região. A saída do comando mostra as zonas de disponibilidade para as quais seu serviço está configurado.

Para alterar a configuração de sub-rede de um serviço do Amazon ECS, execute o seguinte comando update-service:

aws ecs update-service --cluster cluster-name --service service-name --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxx,subnet-yyyyy]}"

Observação: substitua cluster-cluster pelo nome do seu cluster e service-name pelo nome do seu serviço.

Dependência de back-end

Se o caminho de verificação de integridade da aplicação se comunicar com um serviço upstream ou downstream, como um banco de dados, certifique-se de que os serviços estejam disponíveis. Problemas com os serviços podem resultar em uma falha na verificação de integridade.

As tarefas do Amazon ECS podem estar no status Não íntegro por vários motivos. Se a resolução anterior não resolver seu problema, consulte Solucionar problemas de balanceadores de carga de serviços no Amazon ECS.

Informações relacionadas

Verificações de integridade para grupos de destino do Network Load Balancer

Configuração de rede

AWS OFICIALAtualizada há 3 meses