
Eu tenho um serviço registrado com dois grupos-alvo: alb
e wwwalb
.
O alb
grupo-alvo é para solicitações internas e o wwwalb
grupo-alvo é para solicitações externas.
Quando eu implanto meu serviço, ele inicia como deveria e começa a aceitar solicitações. Olhando para o log de acesso, posso ver que tanto o alb
quanto wwwalb
investiga o serviço. Como o serviço é executado em 3 zonas, vejo 3 solicitações para cada zona, 6 no total.
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
Apesar disso, o serviço acaba sendo desativado porque os grupos-alvo acreditam que o serviço não é saudável. Na verdade, nunca parece pensar que o serviço é saudável.
Uma chamada de API para verificar o grupo de destino informa o seguinte:
{
"TargetHealthDescriptions": [
{
"Target": {
"Id": "10.1.143.94",
"Port": 8182,
"AvailabilityZone": "eu-north-1b"
},
"HealthCheckPort": "8182",
"TargetHealth": {
"State": "unhealthy",
"Reason": "Target.FailedHealthChecks",
"Description": "Health checks failed"
}
}
]
}
Já faz algum tempo que estou analisando as métricas do grupo-alvo e as configurações do balanceador de carga - mas simplesmente não consigo encontrar nada sobre a configuração que possa explicar esse comportamento. As configurações de verificação de integridade também parecem boas para mim:
Recentemente adicionei o wwwalb
, então estou pensando que, de alguma forma, ter esse serviço em dois grupos-alvo causa isso. Por outro lado, ter um serviço em dois grupos-alvo é suportado e explicado pela AWS.
Existe uma maneira de obter mais detalhes da AWS sobre o que realmente está causando esse problema? Alguma maneira de descobrir por que a AWS acredita que o serviço está falhando?
Responder1
Normalmente defino meu limite não saudável para algo superior ao meu limite saudável. Assim como 2 chamadas bem-sucedidas com intervalo de 10 segundos são saudáveis, 6 chamadas malsucedidas com intervalo de 10 segundos não são saudáveis.
Dito isto, isso não deveria importar e suas configurações deveriam funcionar. Quando um alvo está sendo registrado, ocorre um estado "inicial". Durante esse período, a AWS está tentando validar as verificações de integridade e só deverá mudar para um estado íntegro se as verificações de integridade forem bem-sucedidas.
Tem certeza de que seu aplicativo não está respondendo com êxito e falhando por um tempo suficiente para não funcionar novamente? Ou será que demora muito para iniciar e nunca sai do estado "inicial"?