Próbuję dostać AutoScalingRollingUpdate
pracować na moją grupę AutoScaling, wnosząc w Internecie nowych instancji, a następnie tylko raz nowa instancja (ów) przyjmując ruch, kończenie starych instancji. Wygląda na to, że AutoScalingRollingUpdate jest przeznaczona do tego celu.AWS AutoScalingGroup HealthCheckType „ELB” uważa Instancji „InService” przedwcześnie
Mam HealthCheckType z mojej AutoScalingGroup na "ELB". Mam też Healthcheck na planie ELB żądać:
- 3 udanych wniosków do/dla "zdrowej"
- 10 nieudanych żądań do/dla "niezdrowe"
- bez okresu karencji (zero, 0)
Teraz, z perspektywy ELB, kiedy nowe instancje pojawiają się w Internecie, nie trwają przez kilka minut w InService, czego się spodziewam. Jednak z perspektywy AutoScalingGroup są one niemal natychmiast traktowane jako InService i jako takie, moja AutoScalingGroup zabrania zdrowych instancji niedziałających, zanim nowe instancje będą faktycznie gotowe do odbierania ruchu. Jestem zdezorientowany, dlaczego ASG uważa, że instancje są zdrowe przed ELB, kiedy HealthCheckType jest jawnie ustawiony na "ELB".
Próbowałem ustawić okres karencji, ale to nic nie zmienia. W rzeczywistości usunąłem okres karencji 300 sekund, ponieważ uważałem, że być może instancje były niejawnie "InService" podczas okresu łaski lub coś takiego.
wiem, że mogę ustawić PauseTime na toczenia polityki aktualizacji, ale, że jest nietrwały, ponieważ czasami awarie zdarzyć, gdy przypadki trybu online i dostać nuked i zastąpione zanim kiedykolwiek zakończyć provisioning, więc czasami okno PauseTime może zostać przekroczone. Chciałbym też zminimalizować czas, w którym moja aplikacja działa w dwóch różnych wersjach jednocześnie.
... 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"
}
}
weryfikacja kodu, myślę, że problem nie jest w ASG 'ustawienie AutoScalingGroup', to w ELB setting.'„HealthCheckGracePeriod”:„0”,' daje mi dziwne uczucie, można zmienić na ' 300'. Następnie ELB zajmie się dostępnością, a nie ASG. ASG będzie skalować w górę iw dół w zależności od statusu ELB. – BMW
Nawet z okresem karencji ASG rozpatruje instancję InService przed wykonaniem ELB. Wygląda mi na błąd w CloudFormation. Rzeczywiście ustawiłem ten czas na zero, próbując naprawić problem. – d11wtq
Czy na pewno program Load Balancer zgłasza wystąpienie jako "niezdrowe"? Gdzie widzisz ten status? Konsola nie jest od razu aktualizowana. Czy AWS CLI daje taki sam status? Jaki jest kod statusu aplikacji podczas jej uruchamiania? Czy zwraca HTTP 200 OK? Możesz to sprawdzić za pomocą 'curl -I ...' –