Фишка из 2015 года от сотрудника Hashicorp. Нужно создавать ASG c lifecycle-ом на каждую LC и разруливать переключение трафика на балансировщике.
В Terraform можно делать вот так:
resource "aws_launch_configuration" "myapp" {
name_prefix = "myapp_"
...
resource "aws_autoscaling_group" "myapp" {
name = "myapp - ${aws_launch_configuration.myapp.name}"
min_elb_capacity = = "${var.myapp_asg_min_size}"
...
lifecycle { create_before_destroy = true }
Пока количество инстансов в статусе
InService не достигнет
min_elb_capacity
, они не будут прицеплены к балансировщику. Затем уже сам балансировщик по хелсчекам у себя должен поменять статус новым инстансам как
InService и начнёт пускать на них трафик, в этот же момент TF начнёт удалять старую ASG.