Como posso corrigir falhas na verificação de integridade dos Application Load Balancers?

7 minuto de leitura
0

Quero descobrir por que os alvos registrados no meu Application Load Balancer não estão íntegros.

Resolução

Para solucionar falhas nas verificações de integridade do seu Application Load Balancer, encontre o código do motivo e a descrição do problema. Em seguida, conclua as tarefas a seguir para resolver seu problema.

Encontre o código do motivo e a descrição do seu problema

Use o mapa de recursos em vez do console do grupo-alvo para visualizar os recursos do balanceador de carga e identificar alvos não íntegros. O mapa de recursos mostra todos os recursos do Application Load Balancer em uma única página.

Observação: se a resposta HTTP de destino do Application Load Balancer não for a resposta esperada, verifique a resposta do seu aplicativo. Certifique-se de que o aplicativo envie a resposta correta ao balanceador de carga.

Resolva o problema com base no código do motivo

Com base no código do motivo da verificação de integridade encontrado, conclua as tarefas a seguir para resolver o problema.

Elb.InitialHealthChecking

Antes que um destino possa receber solicitações do balanceador de carga, ele deve passar por verificações de integridade iniciais. Espere o destino passar pelas verificações de integridade iniciais e, em seguida, verifique novamente seu status de integridade.

Elb.RegistrationInProgress

O balanceador de carga começará a encaminhar as solicitações para o destino assim que o processo de registro for concluído e que o destino passar pelas verificações de integridade iniciais.

Target.DeregistrationInProgress

Quando você cancela o registro de um destino, o balanceador de carga não envia mais solicitações ao destino. O Elastic Load Balancing espera 300 segundos antes de concluir o cancelamento do registro. No entanto, você pode usar o console do Amazon EC2 ou a AWS Command Line Interface (AWS CLI) para atualizar o valor do atraso. Para obter mais informações, consulte Atraso do cancelamento do registro.

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

Target.FailedHealthChecks

Para resolver esse problema, conclua as seguintes etapas:

  • Confirme se sua aplicação está em execução. Use o comando service para verificar o status dos serviços em destinos do Linux. Nos destinos do Windows, verifique a aba Serviços no Gerenciador de Tarefas do Windows. Inicie o serviço se ele estiver interrompido. Se o serviço não for reconhecido, verifique se o serviço está instalado.

  • Confira se o destino está escutando o tráfego na porta da verificação de integridade. Você pode executar o comando ss em destinos Linux para verificar as portas nas quais seu servidor está escutando. Para destinos do Windows, execute o comando netstat.

  • Inicie ou use uma instância existente na mesma Amazon Virtual Private Cloud (VPC) da instância de destino. Verifique se você tem acesso a essa instância. Ou, se o alvo estiver acessível ao público, envie uma solicitação de verificação de saúde diretamente para o endereço IP público do alvo.

    Use o seguinte comando CURL:

    $curl -vkso /dev/null <HealthCheck_protocol>://<Target_IP>:<HealthCheck_port>/<HealthCheck_path>

    Observação: use esse método para ignorar o Application Load Balancer e verificar se o destino está respondendo corretamente às solicitações de verificação de integridade do balanceador de carga.

  • Verifique se seu aplicativo responde às solicitações de verificação de integridade do balanceador de carga. O exemplo a seguir mostra uma solicitação típica de verificação de integridade do Application Load Balancer, para a qual os destinos devem retornar uma resposta HTTP válida:

    GET / HTTP/1.1Host: 10.0.0.1:80
    Connection: close
    User-Agent: ELB-HealthChecker/2.0
    Accept-Encoding: gzip, compressed

    Observação: no exemplo anterior, o valor do cabeçalho Host contém o endereço IP privado do destino, seguido pela porta de verificação de integridade. O User-agent está definido como ELB-HealthChecker/2.0. A sequência CRLF é usada para quebrar a linha entre cabeçalhos. O cabeçalho termina na primeira linha vazia seguida por um CRLF. Para receber as solicitações de verificação de integridade, talvez seja necessário adicionar um host virtual padrão à configuração do seu servidor web.

  • Verifique se seu aplicativo está escutando na interface de rede correta se você conectou várias interfaces ao seu destino. Para obter mais informações, consulte Target type.

  • Confirme se o destino fornece um certificado de servidor e uma chave no formato especificado na política de segurança do Elastic Load Balancing. Além disso, verifique se o destino aceita as cifras correspondentes e o protocolo que o balanceador de carga fornece para estabelecer o handshake TLS.

Target.InvalidState

Se o destino for uma instância do Amazon EC2, use o console do Amazon EC2 para verificar se a instância está em execução. Se a instância não estiver em execução, inicie-a manualmente.

Target.IpUnusable

Se seu tipo de destino for ip, não escolha um endereço IP que um balanceador de carga já esteja usando.

Target.NotInUse

Para resolver esse problema, conclua as seguintes etapas:

  • Verifique o grupo de destino e confira se a configuração dele permite receber tráfego do balanceador de carga.
  • Certifique-se de que a zona de disponibilidade do alvo esteja ativada para o balanceador de carga.

Target.NotRegistered

Verifique se o alvo está registrado no grupo-alvo.

Target.ResponseCodeMismatch

Para resolver esse problema, conclua as seguintes etapas:

  • Revise sua configuração de verificação de integridade para verificar os códigos de sucesso que o balanceador de carga espera receber. Por padrão, o código de sucesso é 200, mas você pode especificar valores entre 200 e 499. Em seguida, inspecione os logs de acesso do servidor web para ver se os códigos de sucesso esperados estão sendo recebidos.
  • Confira se o caminho do ping é válido. Certifique-se de especificar um URI válido. O padrão é /.

Para alterar o valor do código de sucesso ou o caminho do ping, consulte Modify the health check settings of a target group.

Target.Timeout

Se você consegue se conectar, pode ser que a página de destino não esteja respondendo antes de atingir o tempo limite da verificação de integridade. A maioria dos servidores web, como o NGINX e o IIS, permite registrar quanto tempo o servidor leva para responder. Para obter mais informações, consulte Configuring logging no site do NGINX e Configure logging in IIS no site da Microsoft.

Se suas solicitações de verificação de saúde demorarem mais do que o tempo limite configurado, conclua as seguintes tarefas:

Se você não conseguir se conectar, conclua as seguintes tarefas:

  • Use a porta de verificação de integridade e o protocolo de verificação de integridade para verificar se o grupo de segurança associado ao destino permite o tráfego do balanceador de carga. Você pode adicionar uma regra ao grupo de segurança para permitir todo o tráfego vindo do grupo de segurança do balanceador de carga. Além disso, o grupo de segurança do balanceador de carga deve permitir que os destinos recebam tráfego.
  • Confirme se a lista de controle de acesso à rede (ACL de rede) associada às sub-redes do seu alvo permite tráfego de entrada na porta de verificação de integridade. A rede ACL também deve permitir tráfego de saída nas portas efêmeras (1024-65535).
  • Verifique se a ACL de rede associada às sub-redes dos seus nós permite tráfego de entrada nas portas efêmeras. A rede ACL também deve permitir tráfego de saída nas portas efêmeras e de verificação de integridade.
  • Verifique se os firewalls de nível de sistema operacional no alvo permitem que o tráfego de verificação de integridade entre e saia.
  • Confira se a tabela de rotas das sub‑redes associadas ao destino contém uma entrada permitindo que o tráfego de verificação de integridade retorne ao balanceador de carga.
  • Confirme se a memória e a utilização da CPU do seu alvo estão dentro da capacidade aceitável. Se a utilização da memória ou da CPU for muito alta, adicione metas ou aumente a capacidade do seu grupo do Auto Scaling. Se seu destino for uma instância do EC2, altere a instância para um tipo de instância maior.

Informações relacionadas

Solucionar problemas do Application Load Balancer