Я пытаюсь построить более динамичную / масштабируемую систему в AWS .Я запустил 2 экземпляра в группе автоматического масштабирования , где минимальное количество экземпляров равно 2 и максимальное 5 с балансировкой нагрузки перед ними.У меня включена «Защита от прерывания» в первых двух экземплярах, поскольку они будут теми, которые я использую для развертывания моего Rails-приложения через Capistrano .
Проблема в том, что я не уверен, каков наилучший способ поддерживать все экземпляры в моей группе автоматического масштабирования в актуальном состоянии, чтобы они запускали одну и ту же версию приложения.
Я искалдля многих методов ниже приведены те, которые я считаю применимыми, но до сих пор не знаю, какой из них будет наилучшим.
1- AWS CodeDeploy: выглядит довольно круто, используя Синий / ЗеленыйРазвертывание выглядит так, как если бы оно работало довольно стабильно с нулевым временем простоя.Я не знаю, есть ли для этого эмпирическое правило, но, по моему мнению, время развертывания немного длиннее , я не уверен , будет ли оно применимо, когдаМне нужно выпустить исправление .
2- через скрипт: Я также не уверен, как реализовать это с помощью AWS, но идея заключается в том, когда новый код загружается вмои 2 "главных (?)" экземпляра,
- Я создам a новую конфигурацию запуска , используя новый AMI
- Обновите группу автоматического масштабирования , чтобы использовать эту новую конфигурацию запуска
- Уменьшите мою группу автоматического масштабирования до , завершите экземпляры , которые работает со старой конфигурацией
- Надеемся, что политики автоматического масштабирования создадут новые экземпляры с использованием новой конфигурации запуска
проблема с этим подходом состоит в том, что требует ручной операции , на которую я не хочу полагатьсяh.
3- Использование пользовательских данных: Запуск новых экземпляров с пользовательскими данными, которые извлекают новую версию кода.Я не думаю, что это хороший способ, так как, вероятно, будут другие экземпляры, которые уже используют старый код.
Так что это решения, которые я видел до сих пор, какое из них было бы лучшим решением?
Ура!