Я пытаюсь получить AutoScalingRollingUpdate
для работы с моей группой автомасштабирования, путем ввода новых онлайн-экземпляров, а затем только после того, как новый экземпляр принимает трафик, завершая старые экземпляры. Кажется, что AutoScalingRollingUpdate предназначен для этой цели.
У меня есть значение HealthCheckType для моей модели AutoScalingGroup, заданное как "ELB". У меня также есть HealthCheck на ELB, который требует:
- 3 успешных запроса/для "здоровых"
- 10 неуспешных запросов/для "нездоровых"
- нет льготного периода (ноль, 0)
Теперь, с точки зрения ELB, когда новые экземпляры подключаются к сети, они не являются InService в течение нескольких минут, что я и ожидаю. Тем не менее, с точки зрения AutoScalingGroup, они почти сразу рассматриваются как InService, и поэтому моя AutoScalingGroup выводит здоровые экземпляры из строя до того, как новые экземпляры действительно готовы принять трафик. Я смущен, почему ASG считает, что экземпляры здоровы до того, как ELB сделает, когда для параметра HealthCheckType явно установлено значение "ELB".
Я пробовал установить льготный период, но это ничего не меняет. Фактически, я удалил льготный период в 300 секунд, потому что я думал, что экземпляры были неявно "InService" в течение льготного периода или что-то в этом роде.
Я знаю, что могу установить PauseTime в скользящей политике обновления, но это хрупко, потому что иногда случаются сбои, когда экземпляры появляются в сети, и они получают nuked и заменяются до того, как они когда-либо завершат подготовку, поэтому иногда окно PauseTime может быть превышено, Кроме того, я хотел бы свести к минимуму время, в течение которого мое приложение запускает две разные версии одновременно.
... 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"
}
}