Интересно, есть ли простой способ или рекомендации по обеспечению того, чтобы все экземпляры в группе AutoScaling были запущены с текущей конфигурацией запуска этой группы AutoScaling.
Чтобы привести пример, представьте себе группу автомасштабирования с именем www-asg
с 4 необходимыми экземплярами, на которых запущены веб-серверы за ELB. Я хочу изменить AMI или пользовательские данные, используемые для запуска экземпляров этой группы автомасштабирования. Поэтому я создаю новую конфигурацию запуска www-cfg-v2
и обновляю www-asg
, чтобы использовать ее.
# create new launch config
as-create-launch-config www-cfg-v2 \
--image-id 'ami-xxxxxxxx' --instance-type m1.small \
--group web,asg-www --user-data "..."
# update my asg to use new config
as-update-auto-scaling-group www-asg --launch-configuration www-cfg-v2
К настоящему времени все 4 запущенных экземпляра все еще используют старую конфигурацию запуска. Интересно, есть ли простой способ заменить все запущенные экземпляры новыми экземплярами для обеспечения новой конфигурации, , но всегда гарантирует, что минимум экземпляров будет запущен.
Мой текущий способ достижения этого заключается в следующем.
- сохранить список текущих запущенных экземпляров для данной группы автомасштабирования
- временно увеличить количество желаемых экземпляров +1
- ждать появления нового экземпляра
-
завершите один экземпляр из списка через
as-terminate-instance-in-auto-scaling-group i-XXXX \ --no-decrement-desired-capacity --force
-
подождите, пока экземпляр замены будет доступен
- Если осталось больше одного экземпляра с 4.
-
завершать последний экземпляр из списка через
as-terminate-instance-in-auto-scaling-group i-XXXX \ --decrement-desired-capacity --force
-
все экземпляры должны теперь запускаться с одинаковой конфигурацией запуска
У меня в основном автоматизирована эта процедура, но я считаю, что должен быть какой-то лучший способ достичь той же цели. Кто-нибудь знает более эффективный способ?
Mathias
Также опубликовал этот вопрос на официальном форуме AWS EC2.