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