Всем привет. Уже на следующей неделе стартуют занятия по курсу «Облачные сервисы». Предлагаем вашему вниманию краткий пересказ открытого урока «AWS EC2-сервис». Его провёл Егор Зуев, преподаватель и специалист по облачным сервисам с более чем 10-летним опытом работы. В рамках данного семинара мы рассмотрели EC2-сервис от платформы AWS, закодировали и развернули простое приложение, подняли базу данных, а также рассмотрели репликацию образов и балансировщики нагрузок.



Обзор сервиса AWS EC2


EC2 (elastic compute cloud) — это сервис, который предоставляет вычислительные мощности путем предоставления виртуальных/физических машин с заранее созданными образами операционных систем (например, Ubuntu, Debian, Windows).

Типы инстансов, доступные для выбора:



Что касается образов, то в AWS EC2 используется AMI (Amazon machine image) — он же образ заготовленной операционной системы, которую будет применять инстанс EC2. Ближайшая аналогия — виртуальный диск с уже установленной системой, например, в Virtual Box.

Важно знать, что когда мы настраиваем машину и выбираем образ, нам нужно будет настроить доступ. Так как машина будет находиться в облаке, нам и другим пользователям надо будет к ней достучаться. Для этого настраиваем Security group — набор правил (policy), который применяется к инстансу EC2 и включает в себя разрешения на входящий и исходящий трафик.

Работа с консолью


Сразу после регистрации на сервисе вы попадаете в консоль AWS EC2. Там можно выбрать EC2 и тип машины, на которой будем всё разворачивать. В нашем случае выбираем Ubuntu Server.







Важный момент: на шаге № 2 нас интересует t2micro (помечен зелёным стикером), т. к. всё остальное будет платным.

В следующих трёх шагах настройки оставляем по умолчанию, а вот шагу № 6 следует уделить особое внимание. Здесь нужно ввести название группы, например, backend-security-group, а потом сразу добавить правило, чтобы из внешнего мира можно было подключиться только по 80-му порту.



На седьмом шаге нажимаем Launch и запускаем инстанс. Но перед этим система попросит создать ключ для подключения по ssh. Когда все шаги пройдены, на инициализацию уйдёт 1-2 минуты.

Созданный инстанс назовём backend.


Подробное видео по настройкам.

Подключение


Если кто забыл о тонкостях подключения, сервис заботливо об этом подскажет:



Можно использовать для подключения отдельную программу, например, Bitvise SSH Client — очень удобный инструмент.

У машины сразу доступны публичный и приватный IP-адреса. Публичный используем для допуска к машине, который вбиваем, обращаясь к ней по ssh. В качестве username пишем ubuntu, потом импортируем созданный нами ключ. Останется лишь залогиниться на машине. Кстати, все действия будем выполнять из-под рута, для перехода в который набираем команду sudo su.


Подробности подключения.

Подключаем базу данных


В качестве базы данных было принято решение использовать PostgreSQL. Для продолжения работы создаём новый инстанс со следующими настройками:

  • ставим 16 Гб в колонке Size (шаг № 4);
  • Security group name называем database-security-group (шаг № 6);
  • добавляем правило в конфигурации, выбирая PostgreSQL из вложенного списка (шаг № 6).
Кстати, здесь же в поле IP-адресов можно вбить секьюрити группы, в нашем случае речь идёт о backend-security-group. Таким образом, все, кто относятся к этой группе, получат доступ к базе данных в приватной сети. Здесь можете послушать о том, что это за магия такая, приватная сеть.

В итоге получаем в консоли два инстанса — backend и database.


Подробности подключения БД.

Создаём и разворачиваем приложение


Создаём новый проект, используя WebStorm и Node.js. Наша задача — написать простое приложение, которое будет делать всего две вещи — отвечать на пинги и считать количество запросов-обращений к определённому end point и, соответственно, выдавать его.

Разворачивать приложение будем в два этапа. Для развёртывания заходим на машину, именуемую backend, делаем апдейт, устанавливаем Node.js, делаем git clone, устанавливаем библиотеки.

Далее поднимаем базу. Обратите внимание, что Node и Postgres у нас работают на разных машинах. Момент истины — подключение к приложению через публичный адрес. Ура, всё работает!



Следующий этап — создание собственного AMI-образа, который будет для нас доступен. На базе этого AMI-образа мы сможем сделать копию нашего бэкенда и развернуть её в два клика. Для этого переходим в «Image» — «Create Image».



Создав образ, делаем необходимые настройки. Опций совсем немного: например, нужно указать минимальный размер жёсткого диска. Речь идёт о размере снапшота, то есть по сути будет сниматься снапшот с жёсткого диска, на котором у нас всё установлено. Можно сказать, что AMI — это виртуальная сущность, состоящая из настроек образа и снапшота с установленной ОС (в нашем случае, ОС с установленным Node.js, и нашим приложением).

Важный момент: на создание снапшота уйдёт около пяти минут, на протяжении которых машина будет в статусе hold (чем «жирнее» ваш образ, тем больше по времени будет hold).

Назовём образ, к примеру, backend-ami. Имя представлено здесь:



После создания образа мы можем сделать его репликацию и получить такую же копию машины буквально в несколько кликов. И подсоединиться к машинам не по отдельности, а через балансировщики нагрузок. Предлагается несколько балансировщиков на выбор, которые различаются алгоритмами балансировки. Настройка выбранного балансировщика сложностей не вызовет, хотя есть нюансы, о которых важно помнить.



Прайс-модели


AWS EC2 предлагает 4 прайс-модели. В скриншоте ниже представлены описания трёх из них: Reserved, Spot Market и On-Demand. Кстати, на открытом уроке мы использовали модель On-Demand.


Подробнее о моделях.

Кроме возможности выбора моделей, AWS EC2-сервис хорош ещё и тем, что он интегрирован (как и многие другие продукты AWS) с системой мониторинга от AWS – Cloudwatch. Данная система мониторинга гибко настраивается и позволяет следить как за расходом ресурсов, так и бюджета. Буквально в несколько кликов можно настроить лимит на использование EC2 ресурсов, при превышении которого вы получите соответствующее уведомление, например, по почте.

Остаётся добавить, что открытый урок получился весьма содержательным. И если эта тема вам интересна, лучше посмотрите вебинар полностью, чтобы ничего не пропустить.

Комментарии (4)


  1. Dal
    20.09.2019 17:11

    Невероятно!


    1. rsashka
      20.09.2019 19:31

      И всего-то, за какие-то 40000 ;-)


  1. sultan99
    20.09.2019 19:29

    почему не RDS, dockers?


  1. arheops
    21.09.2019 12:27

    Честно говоря, оригинальные материалы получше.

    aws.amazon.com/getting-started/tutorials