Назад | Перейти на главную страницу

Формирование облака - обновление стека за elb не обновляет AMI

Мы обеспечиваем работу наших инстансов AWS EC2 с помощью формирования облака. У нас есть 3 разных стека - тестирование, подготовка и производство. Наш рабочий процесс по обновлению изображений для любого из стеков следующий:

  1. Обновите инстанс "золотой мастер"
  2. Снимок золотого мастера на образ диска
  3. Измените ссылку ami в нашей конфигурации формирования облака (через файл json) для данного стека и update стек.

Это приводит к отключению экземпляров в стеке + их повторная подготовка с новым образом диска.

У нас не было проблем с нашими тестовыми или промежуточными стеками, каждый из которых содержит по одному экземпляру ec2. Каждый раз при обновлении изображение заменяется без проблем.

Наш производственный стек, похоже, не работает таким же образом :-(. Он содержит (как минимум) 2 экземпляра, стоящих за балансировщиком нагрузки. Когда мы обновляем этот стек таким же образом, экземпляры ec2 не обновляются сразу (т.е. после завершения обновления ящики все еще работают с предыдущего образа диска.) Хорошая новость заключается в том, что новые образы используются при автоматическом масштабировании балансировщика нагрузки.

Может ли быть конфликт между правилами балансировки нагрузки и формированием облака?

Приветствуется любое понимание

Примеры:

Стек тестирования: https://gist.github.com/robsquires/629fb6da2d10869363e5

Стек продукции: https://gist.github.com/robsquires/79de54eeb04d620d5222

Это сделано специально и задокументировано в AWS :: AutoScaling :: LaunchConfiguration гид пользователя:

Важный

Когда вы обновляете ресурс LaunchConfiguration, AWS CloudFormation удаляет этот ресурс и создает новый с обновленными свойствами и новым именем. Это действие обновления не развертывает никаких изменений в запущенных экземплярах EC2 в группе автоматического масштабирования. Другими словами, обновление просто заменяет LaunchConfiguration, так что когда группа автоматического масштабирования запускает новые экземпляры, они получат обновленную конфигурацию, но существующие экземпляры будут продолжать работать с конфигурацией, с которой они были изначально запущены. Это работает так же, как если бы вы вручную внесли аналогичные изменения в группу с автоматическим масштабированием.

Я настоятельно рекомендую, чтобы в вашем тестовом стеке вы создавали шаблон точно так же, как у вас есть для производства, только настраивайте значения для снижения затрат, например. MinSize, MaxSize и DesiredCapacity равны 1 и т. д.