Sto cercando di ottenere AutoScalingRollingUpdate
a lavorare sul mio gruppo autoscaling, portando nuovi in linea casi, quindi solo una volta la nuova istanza (s) stanno accettando il traffico, terminando le vecchie istanze. Sembra che AutoScalingRollingUpdate sia progettato per questo scopo.AWS AutoScalingGroup HealthCheckType 'ELB' considera istanza "InService" prematuramente
Ho il HealthCheckType del mio AutoScalingGroup impostato su "ELB". Ho anche il HealthCheck sul set ELB di richiedere:
- 3 richieste riuscite a/a "sano"
- 10 richieste non riuscite a/per "non sano"
- senza periodo di grazia (zero, 0)
Ora, dal punto di vista dell'ELB, quando le nuove istanze arrivano online, non sono InService per diversi minuti, che è quello che mi aspetto. Tuttavia, dal punto di vista di AutoScalingGroup, sono quasi immediatamente considerati InService e, come tale, il mio AutoScalingGroup sta mettendo fuori servizio delle istanze sane prima che le nuove istanze siano effettivamente pronte a ricevere traffico. Sono confuso perché l'ASG pensa che le istanze siano in buona salute prima che l'ELB lo faccia, quando HealthCheckType è impostato esplicitamente su "ELB".
Ho provato a impostare un periodo di prova, ma questo non cambia nulla. In effetti, ho rimosso il periodo di prova di 300 secondi perché pensavo che forse le istanze fossero implicitamente "InService" durante il periodo di prova o qualcosa del genere.
so di poter impostare un pausetime sulla politica di aggiornamento a rotazione, ma che è fragile, perché a volte gli errori accadono quando i casi sono in linea e ottengono Nuked e sostituiti prima che possano finire di provisioning, quindi volte, la finestra pausetime può essere superato Inoltre, mi piacerebbe ridurre al minimo la quantità di tempo in cui la mia app esegue due versioni diverse allo stesso tempo.
... ELB stuff ...
"HealthCheck": {
"HealthyThreshold": "3",
"UnhealthyThreshold": "10",
"Interval": "30",
"Timeout": "15",
"Target": {
"Fn::Join": [
"",
[
{"Fn::Join": [":", ["HTTP", {"Ref": "hostPort"}]]},
{"Ref": "healthCheckPath"}
]
]
}
},
... ASG Stuff ...
{
... snip ...
"HealthCheckType": "ELB",
"HealthCheckGracePeriod": "0",
"Cooldown": "300"
},
"UpdatePolicy" : {
"AutoScalingRollingUpdate" : {
"MinInstancesInService" : "1",
"MaxBatchSize" : "1"
}
}
esaminare il tuo codice, penso che il problema non è in ASG 'impostazione AutoScalingGroup', è nel vostro ELB setting.' "HealthCheckGracePeriod": "0",' mi dà strana sensazione, si potrebbe passare a ' 300'. Dopodiché, ELB si occuperà della disponibilità, non dell'ASG. L'ASG si scalerà e diminuirà in base allo stato ELB. – BMW
Anche con un periodo di prova, l'ASG considera l'istanza InService prima dell'ELB. Mi sembra un errore in CloudFormation. In realtà ho impostato quel tempo fino a zero nel tentativo di risolvere il problema. – d11wtq
Sei sicuro che Load Balancer segnala l'istanza come "non sana"? Dove vedi questo stato? La console a volte non viene aggiornata immediatamente. La CLI di AWS ti offre lo stesso stato? Qual è il codice di stato HTTP della tua app mentre inizia? Restituisce HTTP 200 OK? Puoi verificarlo usando 'curl -I ...' –