Elastic Beanstalk

Обновлено: 2023-09-01
3 мин

AWS Elastic Beanstalk

Цены

Дополнительная плата за AWS Elastic Beanstalk не взимается. Оплате подлежат только ресурсы AWS, необходимые для хранения и работы приложений.

Практика

Контролируемое развертывание с AWS Elastic Beanstalk

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

Первое обновление развертывается с помощью простого развертывания. Второе обновление развертывается с помощью blue-green развертывания, когда создается отдельная среда для запуска новой версии приложения, а DNS свитчер переключает входящий трафик на новую среду.

Итоговая архитектура развертывания будет выглядеть следующим образом

02.png

Загрузка приложения

В данном обзоре я использую код, который предоставил мне Cloudacademy, но у меня есть готовый скрипт для запуска, который вы можете загрузить в Elastic Beanstalk: скачать

Создание

Заходим на страницу Elastic Beanstalk и нажимаем Create Application

03.png

Название

Указываем название нового приложения

04.png

Выбор платформы

В разделе Platform выбираем нужную платформу приложения. В нашем случае - Node.js

05.png

Загрузка исходников

В разделе Source code origin указываем версию приложения и загружаем архив с приложением. Пример

06.png

Конфигурация приложения

Изменяем предустановку Configuration на Custom configuration:

07.png

Нажимаем Edit в разделе Rolling updates and deployments

В конфигурации по умолчанию обновления распространяются на все экземпляры одновременно. Это приводит к простою приложения, что неприемлемо для производственных сред.

Мы установим Rolling и Batch size 30%

08.png

Сеть

Вернувшись к основной форме приложения, нажмите Edit в конфигурации Network.

На форме Modify network настроим следующие значения, затем Save.

  • VPC: Выберите VPC с блоком CIDR 10.0.0.0/16. Это не будет VPC по умолчанию.
  • Load balancer settings:
    • Load balancer subnets: Выберите подсети с блоками CIDR 10.0.100.0/24(us-west-2a10.0.101.0/24 (us-west-2b). Это публичные подсети. Балансировщику нагрузки приложений требуется как минимум две подсети в разных зонах доступности
  • Instance settings:
    • Instance subnets: Выберите подсеть с блоком CIDR 10.0.1.0/24. Это частная подсеть.

      09.png

10.png

Подтверждение

Нажимаем Create app

Процесс создания приложения занимает от 5 минут.

Далее переходим в раздел Dasboard

11.png

На этом этап загрузки приложения в Elastic Beanstalk закончен. Далее разберем как переключать загрузку новой версии приложения клиентам.

Загрузка 2-й версии приложения

Загрузка версии 2.0

Нажимаем Upload and deploy и загружаем обновленный код. _Например, можно том же исходнике изменить текст для сравнения.

12.png

Указываем новую версию и настройки публикации

13.png

Сравнение версий

Теперь можем сверить обе версии, пройдя по ссылкам. В моем случае приложения выглядят следующим образом

15.png

14.png

Смена url у приложений

Теперь поменяем приложения местами. Чтобы пользователь, который ранее заходил по одному адресу, теперь видел 2-ю версию приложения.

В разделе Actions нажимаем Swap environment URLs и далее выбираем приложение с которым происходит смена

16.png

Удаление ресурсов Elastic Beanstalk

Elastic Beanstalk для развертывания приложений запускает EC2 инстансы, а также прочие сервисы. Но удалить все сервисы можно из одного окна.

  1. Идем в раздел Applications
  2. Выбираем приложение
  3. Нажимаем Actions -> Terminate environment

17.png

Ресурсы

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/tutorials.html

Ранее EC2
Далее Lambda