AWS EC2-сервис и работа с ним



    Всем привет. Уже на следующей неделе стартуют занятия по курсу «Облачные сервисы». Предлагаем вашему вниманию краткий пересказ открытого урока «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 ресурсов, при превышении которого вы получите соответствующее уведомление, например, по почте.

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

    Похожие публикации

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

      0

      Невероятно!

        –1
        И всего-то, за какие-то 40000 ;-)
        0
        почему не RDS, dockers?
          +2
          Честно говоря, оригинальные материалы получше.

          aws.amazon.com/getting-started/tutorials

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

          Самое читаемое