Как развернуть код в нескольких экземплярах группы автоматического масштабирования Amazon EC2?

У Yum нет собственного типа упаковки. Yum работает и помогает управлять RPM. Таким образом, вы можете использовать yum для перечисления доступных RPM, а затем запустить команду rpm -qlp, чтобы просмотреть содержимое этого пакета.

1
задан groobie newbie 16 January 2019 в 17:10
поделиться

2 ответа

Вы делаете это в конфигурации запуска AutoScalingGroup. В LaunchConfiguration в CloudFormation есть раздел UserData, в котором вы могли бы написать сценарий, который запускается, когда ASG масштабируется и развертывает новый экземпляр.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-userdata

Это то же самое, что и раздел UserData в экземпляре EC2. Вы можете использовать ловушки LifeCycle, которые сообщат ASG не загружать экземпляр EC2 до тех пор, пока все, что вы хотите, настроило его.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html

Я связал все страницы CloudFormation, но вы может использовать какой-либо другой инструмент CI / CD для развертывания вашей инфраструктуры, но, надеюсь, это поможет вам начать работу.

0
ответ дан Loaf 16 January 2019 в 17:10
поделиться

Для начала проверьте AWS CloudFormation . Вы будете создавать шаблоны для проектирования работы инфраструктуры вашего приложения - инфраструктуры как кода. С помощью этих шаблонов вы можете развернуть обновление вашей инфраструктуры, передав изменения в ваши шаблоны и / или код приложения.

В моем текущем проекте у нас есть хранилище github, предназначенное для этих шаблонов инфраструктуры, и отдельное хранилище для кода нашего приложения. Создайте конвейер для создания ресурсов AWS, который будет развертывать обновленные до AWS каждый раз, когда вы отправляете в хранилище в определенной ветке.

  • Создайте конвейер инфраструктуры.
  • создайте свой первый этап конвейера, чтобы запускать сборку всякий раз, когда в шаблонах инфраструктуры появляются изменения кода. См. AWS CodePipeline , а также см. AWS CodeBuild . Это не единственные ресурсы AWS, которые вам понадобятся, но они, вероятно, являются основными, конечно, за исключением того, что делается в шаблоне облачной информации, как упоминалось ранее.

как я буду каждый раз развертывать код на динамически генерируемых экземплярах?

  • Проверьте, как работает containers, было бы лучше и будет очень дополнение к тому, как вы узнаете, как работает новая версия приложения. Для начала см. docker , но не стесняйтесь проверять любые ресурсы в вашем распоряжении
  • Продолжение моего текущего проекта: у нас есть отдельный конвейер, выделенный для нашего приложения, но он также будет запущен после обновления нашей инфраструктуры. Наш конвейер приложений предназначен для создания новой версии нашего приложения через AWS Codebuild, это создаст image, который станет контейнером ~ из документации докера.
  • у нас есть два триггера или два источника, которые будут запускать развертывание обновлений в нашем конвейере приложений, один - когда происходят изменения в конвейере инфраструктуры, и он успешно собран, и второй - когда происходят изменения в нашем репозитории github, подключенном через AWS CodeBuild.
  • Проверьте AWS AutoScaling , в этих областях описывается динамический запуск новых экземпляров, выключение экземпляров при необходимости, замена нездоровых экземпляров при необходимости. См. Также AWS CloudWatch , с его помощью вы можете разработать критерии для запуска масштабирования вниз / вверх и / или входа / выхода.

Будет ли aws копировать весь экземпляр, назначать ему новый ip и порождать его как новый экземпляр, или мне придется написать некоторый код для автоматизации этого процесса?

  • См. AWS ElasticLoadBalancing , а также ознакомьтесь с дополнительной информацией об AWS AutoScaling. В процессе автоматизации, если вы когда-нибудь будете использовать CloudFormation, экземпляры и / или контейнеры (в зависимости от вашего дизайна) будут управляться изящно.

Плюс, не будет ли непростой задачей извлекать код из git и развертывать каждый раз, когда создается новый экземпляр?

  • Как уже упоминалось, ранее имея конвейер для развертывания новых версий вашего приложения через CodeBuild, это создаст образ с новыми изменениями кода, а когда все будет готово, он будет развернут ~ становится контейнером. Старый экземпляр EC2 или старый контейнер (в зависимости от того, как вы хотите, чтобы ваше приложение было развернуто) будут корректно закрыты после запуска и запуска новой версии вашего приложения. Это даст вам нулевое время простоя.
  • [1 125]
0
ответ дан groobie newbie 16 January 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: