Boa tarde
Verifiquei que após construir o cluster ECS a task é finalizada de forma recorrente sempre com a mensagem abaixo:
Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-west-2:574980437017:targetgroup)
Boa tarde
Verifiquei que após construir o cluster ECS a task é finalizada de forma recorrente sempre com a mensagem abaixo:
Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-west-2:574980437017:targetgroup)
Resolvi o problema com a seguinte solução:
Deixei explícito o status code do retorno do health check do balance
health_check {
enabled = true
interval = 30
path = "/"
port = "traffic-port"
protocol = "HTTP"
timeout = 5
healthy_threshold = 5
unhealthy_threshold = 2
matcher = 302
}
Pesquisando sobre o caso, verifiquei que o http 302 é referente a redirecionamento.
Analisado o caso, percebi que ainda não consegui resolver
Compartilhando a solução do caso, tive que adicionar health check para o target group e para a task definition.
Para o target group adicionei a seguinte configuração no terraform
health_check {
enabled = true
interval = 30
path = var.health_check_path
port = "traffic-port"
protocol = "HTTP"
timeout = 5
healthy_threshold = 5
unhealthy_threshold = 2
matcher = var.matcher_ports
}
Tive que implementar um endpoint de health no projeto para servir como path, mas pelo que pesquisei você também pode adicionar como root ("/"). Em relação ao matcher, deixei como 200 e 302 para tratar casos de redirecionamentos.
variable "health_check_path" {
default = "/health"
}
variable "matcher_ports" {
default = "200,302"
}
Na task definition adicionei o seguinte comando ao json template para deixar o container como health no painel da AWS
"command": ["CMD-SHELL","curl -f http://localhost:3000/health || exit 1"],
Foi necessário instalar o curl dentro da imagem docker uma vez que a imagem que estava trabalhando era alpine.