Como fazer com que minhas tarefas do Amazon ECS sejam executadas usando o tipo de execução do Amazon EC2 para passar na verificação de integridade do Application Load Balancer no Amazon ECS?

12 minuto de leitura
0

Uma verificação de integridade do Application Load Balancer para uma instância do Amazon Elastic Compute Cloud (Amazon EC2) no Amazon Elastic Container Service (Amazon ECS) retorna um status não íntegro. Quero que minha instância do EC2 passe na verificação de integridade.

Breve descrição

Quando sua tarefa do Amazon ECS falha na verificação de integridade do balanceador de carga, você recebe um dos seguintes erros da mensagem de evento de serviço do Amazon ECS:

  • “(serviço AWS-Service) (porta 8080) não está íntegro em (grupo de destino arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) devido a (motivo de falha das verificações de integridade com estes códigos: [502 ou 504]) ou (tempo limite da solicitação)”
  • “(serviço AWS-Service) (porta 8080) não está íntegro em grupo de destino tf-20190411170 devido a (motivo de falha das verificações de integridade)”
  • “O (serviço AWS-Service) (instância i-1234567890abcdefg) (port 443) não está íntegro em (grupo de destino arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) devido a (motivo pelo qual os controles de integridade falharam)”

Você também pode receber o seguinte erro do seu console de tarefas do Amazon ECS:

“A tarefa falhou nas verificações de integridade do ELB em (grupo de destino arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789)”

Se você está recebendo o erro “Falha de (serviço AWS-Service) (tarefa c13b4cb40f1f4fe4a2971f76ae5a47ad) nas verificações de integridade do contêiner”, consulte Como soluciono problemas na verificação de integridade em tarefas do Amazon ECS?

Observação: uma tarefa do Amazon ECS pode retornar o status de não íntegra por vários motivos. Se as etapas a seguir não resolverem seu problema, consulte Como solucionar de problemas com balanceadores de carga de serviço. Para descobrir por que sua tarefa do ECS foi interrompida, consulte Como verificar erros em tarefas paradas.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucione erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para solucionar seus problemas de verificação de integridade do balanceador de carga em sua tarefa do Amazon ECS e passar na verificação de integridade do Application Load Balancer, verifique o seguinte:

  • Conectividade entre seu balanceador de carga e a tarefa do Amazon ECS
  • Configurações de verificação de integridade do seu grupo de destino
  • Status e configuração da aplicação no seu contêiner do ECS
  • Status da instância de contêiner

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

Para garantir que seu balanceador de carga tenha permissão para realizar verificações de integridade em suas tarefas do Amazon ECS, revise as informações a seguir.

Os grupos de segurança conectados ao seu balanceador de carga e instância de contêiner ou à interface de rede elástica de tarefas do ECS para o modo de rede awsvpc estão configurados corretamente

É uma prática recomendada configurar diferentes grupos de segurança para seu balanceador de carga e instância de contêiner ou interface de rede elástica para tarefas. Com essa abordagem, você permite todo o tráfego entre seus balanceadores de carga e instâncias de contêiner ou interface de rede elástica para tarefas. Você também pode permitir que suas instâncias de contêiner aceitem tráfego na porta especificada para a tarefa.

  • Confirme se 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 elástica de tarefas na porta registrada. Confirme se o mesmo é válido para a porta de verificação de integridade associada à sua instância de contêiner, se aplicável.
  • Confirme se o grupo de segurança associado à sua instância de contêiner ou à interface de rede elástica de tarefas permite todo o tráfego de entrada na faixa de portas do host da tarefa a partir do grupo de segurança associado ao seu balanceador de carga. Para verificar o grupo de segurança associado ao seu balanceador de carga, consulte Grupos de segurança do seu Application Load Balancer.

Importante: quando você usa o mapeamento dinâmico de portas, o serviço é exposto na porta dinâmica (normalmente portas 32768 a 65535) em vez de na porta do host. Nesse caso, confirme se o grupo de segurança da instância de contêiner reflete o intervalo de portas efêmeras nas regras de entrada do balanceador de carga como origem.

Seu balanceador de carga está configurado na mesma zona de disponibilidade da instância de contêiner ou da interface de rede elástica de tarefas do ECS para o modo de rede awsvpc

Quando você habilita uma zona de disponibilidade para seu balanceador de carga, o Elastic Load Balancing cria um nó de balanceador de carga nessa zona de disponibilidade. Se você registrar destinos em uma zona de disponibilidade, mas não ativar a Zona de disponibilidade, esses alvos registrados não receberão tráfego. Para mais informações, consulte Zonas de disponibilidade e nós do balanceador de carga.

Para descobrir as Zonas de disponibilidade para as quais seu balanceador de carga está configurado, conclua as seguintes etapas:

  1. Abra o console do Amazon EC2.
  2. No painel de navegação, em Balanceamento de carga, escolha Balanceadores de carga.
  3. Selecione o balanceador de carga que você está usando para o seu serviço do Amazon ECS.
  4. Na guia Descrição, você pode visualizar as zonas de disponibilidade no campo Zonas de disponibilidade.

Observação: para um Application Load Balancer, você pode habilitar ou desabilitar as zonas de disponibilidade a qualquer momento. Para um Network Load Balancer, você não pode desabilitar as zonas de disponibilidade depois de habilitá-lo, mas você pode habilitar zonas de disponibilidade adicionais.

Se você usa Application Load Balancers, o balanceamento de carga entre zonas estará sempre ativado. Se você usa Network Load Balancers, o balanceamento de carga entre zonas está desativado por padrão. Depois de criar o Network Load Balancer, você pode ativar ou desativar o balanceamento de carga entre zonas a qualquer momento. Para mais informações, consulte Como o Elastic Load Balancing funciona.

Para descobrir as zonas de disponibilidade para as quais suas instâncias de contêiner estão configuradas, conclua as seguintes etapas:

  1. Abra o console do Amazon EC2.
  2. No painel de navegação, em Auto Scaling, escolha Grupos do Auto Scaling.
  3. Selecione o grupo do Auto Scaling da instância de contêiner associado ao seu cluster.
  4. Na guia Detalhes, em Rede, verifique se as zonas de disponibilidade listadas correspondem às zonas de disponibilidade listadas para seu balanceador de carga.

Para modificar as zonas de disponibilidade do seu cluster, abra o console do AWS CloudFormation, escolha a pilha do CloudFormation para seu cluster e atualize a configuração das sub-redes. Para descobrir as zonas de disponibilidade para as quais sua interface de rede elástica de tarefas para awsvpc está configurada, conclua as seguintes etapas:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters e selecione o cluster que contém seu serviço.
  3. Na guia Serviços da página do seu cluster, na coluna Nome do serviço, selecione o serviço que você deseja verificar.
  4. Escolha Detalhes e selecione Sub-redes permitidas para exibir as sub-redes que estão habilitadas para o serviço.
  5. Você pode visualizar as sub-redes no console da Amazon VPC.
  6. Verifique se as zonas de disponibilidade das sub-redes correspondem às zonas de disponibilidade listadas para seu balanceador de carga.

Observação: você não pode alterar a configuração de sub-rede de um serviço do Amazon ECS no console do Amazon ECS. Você pode usar o comando update-service da AWS CLI para alterar a configuração da sub-rede.

A lista de controle de acesso à rede (ACL) associada às sub-redes do balanceador de carga e às instâncias de contêiner do ECS ou à interface de rede elástica de tarefas do ECS para o modo de rede awsvpc está configurada corretamente

As sub-redes do balanceador de carga e da instância de contêiner ou da interface de rede elástica de tarefas podem ser diferentes. Para garantir que o tráfego seja permitido entre essas sub-redes, verifique o seguinte:

  • Certifique-se de que a ACL de rede associada às sub-redes do seu balanceador de carga permita o tráfego de entrada nas portas efêmeras (1024 a 65535) e na porta do receptor. Verifique se a ACL da rede também permite tráfego de saída na verificação de integridade e nas portas efêmeras.
  • Certifique-se de que a ACL de rede associada às sub-redes de sua instância de contêiner ou a interface de rede elástica de tarefas para o modo awsvpc permita tráfego de entrada na porta de verificação de integridade. Verifique se a ACL da rede permite tráfego de saída nas portas efêmeras.

Para mais informações sobre ACLs de rede, consulte Trabalhe com ACLs de rede.

Verifique as configurações de verificação de integridade do seu grupo de destino

Para garantir que as configurações de verificação de integridade do seu grupo de destino estejam definidas corretamente, conclua as seguintes etapas:

  1. Abra o console do Amazon EC2.
  2. No painel de navegação, em Balanceamento de carga, escolha Grupos de destino.
  3. Selecione o grupo de destino.
    Importante: use um novo grupo de destino. Evite adicionar destino ao grupo de destino manualmente, pois o Amazon ECS registra e cancela automaticamente o registro de contêineres no grupo-alvo.
  4. Na guia Verificações de integridade, insira as seguintes informações:
    Verifique se os campos Porta e Caminho estão configurados corretamente. Se o campo Porta não estiver configurado corretamente, seu balanceador de carga poderá cancelar o registro do contêiner.
    Em Porta, escolha porta de tráfego.
    Observação: se você escolher Substituir, confirme se a porta especificada corresponde à porta do host da tarefa.
    Para Tempo limite, certifique-se de que o valor do tempo limite de resposta esteja definido corretamente.
    Observação: o tempo limite de resposta é o tempo que seu contêiner tem para retornar uma resposta ao ping de verificação de integridade. Caso o valor seja menor que o tempo necessário a 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 em seu contêiner ECS responde à verificação de integridade do balanceador de carga

Para garantir que a aplicação no seu contêiner do ECS responda corretamente à verificação de integridade do balanceador de carga, conclua as seguintes tarefas:

  • Verifique se a porta de 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 ECS. Por exemplo, uma CPU alta pode fazer com que sua aplicação pare de responder e causar um erro 502 ou tempo limite.
  • Defina um período mínimo de carência para verificação de integridade. Essa configuração instrui o agendador de serviços a ignorar as verificações de integridade do Elastic Load Balancing por um período de tempo predefinido após a instanciação de uma tarefa. Sua tarefa do Amazon ECS pode exigir um período de carência de verificação de integridade mais longo para registrar o Network Load Balancer.
  • Verifique se há erros na aplicação nos registros da aplicação. Para mais informações, consulte Como visualizar logs de contêineres awslogs no CloudWatch Logs.

Confirme se a aplicação em seu contêiner ECS retorna o código de resposta correto

Quando o balanceador de carga envia uma solicitação GET HTTP ao caminho de verificação de integridade, espera-se que a aplicação no seu contêiner do ECS retorne o código de resposta 200 OK padrão.

Observação: se você usar um Application Load Balancer, poderá atualizar a configuração Agente de correspondência para um código de resposta diferente de 200. Para mais informações, consulte Verificações de integridade para seus grupos de destino.

  1. Use SSH para se conectar à sua instância de contêiner.

  2. (Opcional) Instale o curl com o comando apropriado para seu sistema.
    Para o Amazon Linux e outras distribuições baseadas em RPM, execute o seguinte comando:

    sudo yum -y install curl

    Para sistemas baseados em Debian (como Ubuntu), execute o seguinte comando:

    sudo apt-get install curl
  3. Para obter o ID do contêiner, execute o seguinte comando:

    docker ps

    Observação: a porta do receptor local é exibida na saída do comando em PORTS no final da sequência.

  4. Para obter o endereço IP do contêiner, execute o comando docker inspect:

    $ IPADDR=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' 112233445566)

    Observação: o endereço IP do contêiner é salvo em IPADDR. Use esse comando somente se você usar o modo de rede BRIDGE. Substitua 112233445566 pelo número de ID do contêiner.
    Se você usar o modo de rede awsvpc, use o endereço IP da tarefa atribuído à interface de rede elástica da tarefa. Se você usar o modo de rede HOST, use o endereço IP do host pelo qual a tarefa está exposta.

  5. Para obter o código de status, execute um comando curl que inclua IPADDR e a porta do receptor local. Por exemplo, se você executar o comando curl em um contêiner escutando na porta 8080 com o caminho de verificação de integridade /health, o comando deverá retornar o código de resposta 200 OK:

    curl -I http://${IPADDR}:8080/health

    Se você receber uma mensagem de erro que não seja HTTP, significa que sua aplicação não está ouvindo tráfego HTTP. Se você receber um código de status HTTP diferente do especificado na configuração Agente de correspondência, significa que sua aplicação está ouvindo o tráfego HTTP, mas não retornando um código de status para um destino saudável.

Verifique o status da sua instância de contêiner

Suponha que você receba a seguinte mensagem de evento do seu evento de serviço do AWS ECS:

“O (serviço AWS-Service) (instância i-1234567890abcdefg) (port 443) não está íntegro em (grupo de destino arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) devido a (motivo pelo qual os controles de integridade falharam)”

Verifique o status da sua instância de contêiner ao visualizar a verificação de status no console do Amazon EC2. Se sua instância falhar nas verificações de status do sistema, tente interrompê-la e iniciá-la.

Informações relacionadas

Configure um grupo de destino para roteamento

Balanceamento de carga do serviço

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos