Использование Docker, RDS Amazon Aurora и Nginx с HTTPS

Введение

Существует несколько способов развертывания вашего приложения Nodejs, будь то в облаке или локально. Однако речь идет не только о развертывании вашего приложения, но и о его правильном развертывании. Безопасность также является важным аспектом, который нельзя игнорировать. Если вы это сделаете, приложение долго не простоит, и велика вероятность его компрометации.

Следовательно, здесь мы должны помочь вам с шагами развернуть приложение Nodejs на AWS. Мы покажем вам, как именно развернуть приложение Nodejs на сервере с помощью контейнеров Docker, RDS Amazon Aurora и Nginx с HTTPS. Вы сможете получить к нему доступ, используя доменное имя.

Стек инструментов

Пример приложения Nodejs

Пример приложения Nodejs с тремя API: а именно, статус, вставка и список. Эти API будут использоваться для проверки состояния приложения, вставки данных в базу данных, а также для извлечения и отображения данных из базы данных.

Экземпляр AWS EC2

Экземпляр Amazon Elastic Compute Cloud (Amazon EC2) Ubuntu 20.04 LTS будет использоваться для развертывания контейнерного приложения Nodejs. В этот экземпляр мы установим Docker, поверх которого будут созданы контейнеры. Мы также установим клиент MySql на экземпляр. Клиент MySql требуется для подключения к экземпляру Aurora для создания необходимой таблицы.

AWS RDS Amazon Aurora

Наши данные будут храниться в AWS RDS Amazon Aurora. Мы будем хранить простые поля, такие как username, email-id и age, в экземпляре AWS RDS Amazon Aurora.

Amazon Aurora — это реляционная база данных, совместимая с MySQL и PostgreSQL, доступная на AWS.

Докер

Docker — это платформа контейнеризации для создания образов Docker и их развертывания с использованием контейнеров. Мы развернем приложение Nodejs на сервер, Nginx и Certbot в качестве контейнеров Docker.

Docker-Compose

Для раскрутки контейнеров Nodejs, Nginx, Certbot будем использовать Docker-Compose. Docker Compose помогает сократить время развертывания и управления контейнерами.

Nginx

Это будет использоваться для включения HTTPS для примера приложения Nodejs и перенаправления всех пользовательских запросов в приложение Nodejs. Он будет действовать как обратный прокси-сервер для перенаправления пользовательских запросов в приложение и поможет защитить соединение, предоставив конфигурацию для включения SSL/HTTPS.

Certbot

Это позволит нам автоматически использовать Let’s Encrypt для проверки домена и выпуска SSL-сертификатов.

Домен

В конце документа вы сможете получить доступ к образцу приложения Nodejs, используя свое доменное имя через HTTPS, т. е. ваши образцы Nodejs будут защищены в Интернете.

Почтальон

Мы будем использовать Postman для тестирования наших API, т. е. для проверки статуса, вставки данных и списка данных из базы данных.

Как я уже сказал, мы «развернем приложение Nodejs на сервере с помощью контейнеров Docker, RDS Amazon Aurora, Nginx с HTTPS и получим доступ к нему, используя доменное имя». Во-первых, давайте разберемся с архитектурой, прежде чем пачкать руки.

Архитектура для развертывания приложения Nodejs на сервере EC2 с помощью Docker

Приложение Nodejs будет доступно port 3000. Этот пример приложения Nodejs извлекает данные из экземпляра RDS Amazon Aurora, созданного в том же облаке VPC, что и экземпляр EC2. Инстанс Amazon Aurora DB будет частным и, следовательно, доступным в том же облаке VPC. Доступ к приложению Nodejs, развернутому на экземпляре EC2, можно получить, используя его общедоступный IP-адрес на port 3000, но мы этого не сделаем.

Доступ к приложениям через нестандартные порты не рекомендуется. Следовательно, Nginx будет выступать в качестве обратного прокси-сервера и включать SSL-терминацию. Пользователи будут пытаться получить доступ к приложению, используя доменное имя, и эти запросы будут перенаправлены в Nginx.

Nginx проверит запрос и на основе API перенаправит этот запрос в приложение Nodejs. Приложение также будет завершено с помощью SSL. В результате связь между клиентом и сервером будет защищена и защищена.

Предпосылки

Прежде чем мы приступим к развертыванию приложения Nodejs на AWS, предполагается, что у вас уже есть следующие предварительные условия:

  1. Аккаунт AWS
  2. PostMan или любая другая альтернатива на вашем компьютере для тестирования API
  3. Зарегистрированный домен в вашей учетной записи AWS

Создайте экземпляр Ubuntu 20.04 LTS EC2 на AWS

Перейдите на https://AWS.amazon.com/console/ и войдите в свою учетную запись.

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

Затем нажмите «Запустить экземпляры», чтобы настроить и создать экземпляр EC2.

Выберите AMI «Ubuntu Server 20.04 LTS».

Я бы порекомендовал вам выбрать t3.small только в целях тестирования. Это будет иметь два процессора и 2 ГБ оперативной памяти. Вы можете выбрать тип экземпляра в соответствии с вашими потребностями и выбором.

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

Лучше поставить больше места на диске на 30GB. Остальное может быть по умолчанию.

Назначьте теги «Имя» и «Среда» любым значениям по вашему выбору. Вы можете даже пропустить этот шаг.

Разрешить подключение к port 22 только с вашего IP. Если вы разрешите это с 0.0.0.0/0, то ваш экземпляр разрешит всем на port 22.

Просмотрите конфигурацию один раз и нажмите «Запустить». Если все выглядит нормально, создайте экземпляр.

Перед созданием экземпляра ему нужна пара ключей. Вы можете либо создать новую пару ключей, либо использовать существующую. Нажмите кнопку «Запустить экземпляры», которая инициирует создание экземпляра.

Чтобы перейти в консоль и проверить свой экземпляр, нажмите кнопку «Просмотр экземпляров».

Здесь вы можете видеть, что экземпляр был создан и находится в фазе «Инициация». Через минуту или две вы увидите, что ваш экземпляр запущен и работает.

Тем временем давайте создадим экземпляр RDS.

Создайте RDS Aurora с экземпляром MySQL на AWS

Снова нажмите на строку поиска в верхней части страницы и на этот раз найдите «RDS». Щелкните результат, чтобы перейти на панель мониторинга RDS.

Нажмите кнопку «Создать базу данных», чтобы настроить и создать экземпляр RDS на панели инструментов RDS.

Выберите метод «Простое создание», тип ядра «Amazon Aurora» и размер экземпляра БД «Разработка/Тест» следующим образом:

Прокрутите немного вниз и укажите «идентификатор кластера БД» как «my-Nodejs-database». Вы можете указать любое имя по вашему выбору, так как это просто имя, данное экземпляру RDS. Тем не менее, я бы предложил использовать одно и то же имя, чтобы не запутаться при выполнении следующих шагов.

Кроме того, укажите имя главного пользователя как «admin», его пароль, а затем нажмите «Создать базу данных».

Это инициирует создание экземпляра RDS Amazon Aurora. Обратите внимание, что вы не должны устанавливать простые имена пользователей и пароли для производственных или реальных сред.

Здесь вы можете видеть, что экземпляр находится в состоянии «Создание». Примерно через 5–10 минут экземпляр должен быть запущен и запущен.

Вот несколько заметок:

  • Экземпляр RDS Amazon Aurora по умолчанию будет частным, что означает, что экземпляр RDS Amazon Aurora не будет доступен извне и будет доступен только в облаке VPC.
  • Экземпляр EC2 и экземпляр RDS принадлежат одному и тому же VPC.
  • Экземпляр RDS доступен из экземпляра EC2.

Установите зависимости в экземпляре EC2

Теперь вы можете подключиться к созданному нами экземпляру. Я не буду вдаваться в подробности подключения к инстансу; Я верю, что вы уже это знаете.

MySQL-клиент

Нам понадобится клиент MySQL для подключения к экземпляру RDS Amazon Aurora и создания в нем базы данных. Подключитесь к экземпляру EC2 и выполните из него следующие команды.

sudo apt update
sudo apt install mysql-client

Создать таблицу

Нам понадобится таблица в нашем экземпляре RDS Amazon Aurora для хранения данных нашего приложения. Чтобы создать таблицу, подключитесь к инстансу Amazon RDS Aurora с помощью клиента MySQL, который мы установили на инстансе EC2 на предыдущем шаге.

Скопируйте конечную точку базы данных из экземпляра Amazon Aurora.

Выполните следующие общие действия с правильными значениями:

mysql -u <user-name> -p<password> -h <host-endpoint>

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

mysql -u admin -padmin1234 -h my-Nodejs-database.cluster-cxxjkzcl1hwb.eu-west-3.rds.amazonAWS.com

После подключения к экземпляру Amazon RDS Aurora выполните следующие команды, чтобы создать таблицу пользователей.

show databases;
use main;
CREATE TABLE IF NOT EXISTS users(id int NOT NULL AUTO_INCREMENT, username varchar(30), email varchar(255), age int, PRIMARY KEY(id));
select * from users;

Обратитесь к следующему снимку экрана, чтобы понять выполнение команд.

Создать каталог приложений

Теперь давайте создадим каталог, в котором мы будем хранить всю нашу кодовую базу и файлы конфигурации.

pwd
cd /home/ubuntu/
mkdir Nodejs-docker
cd Nodejs-docker

Клонировать репозиторий кода в экземпляре EC2

Клонируйте мой репозиторий Github, содержащий весь код. Это необязательный шаг; Я включил весь код в этот документ.

pwd
cd /home/ubuntu/
git clone https://github.com/shivalkarrahul/DevOps.git
cp /home/ubuntu/DevOps/AWS/Nodejs-docker/* /home/ubuntu/Nodejs-docker

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

Разверните приложение Nodejs в экземпляре AWS EC2 и получите к нему доступ с помощью доменного имени

Почему вы должны использовать Docker в своем инстансе EC2?

Docker — это инструмент контейнеризации, используемый для упаковки нашего программного приложения в образ, который можно использовать для создания контейнеров Docker. Docker помогает легко создавать, совместно использовать и развертывать наши приложения.

Первым шагом докеризации является установка Docker.

Установить Докер

  1. Проверить версию Linux
    cat /etc/issue
  2. Обновите индекс пакета apt
    sudo apt-get update
  3. Установите пакеты, чтобы разрешить apt использовать репозиторий через HTTPS
    sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  4. Добавьте официальный ключ GPG Docker:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  5. Настройте стабильный репозиторий
    echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  6. Обновите индекс пакета apt
    sudo apt-get update
  7. Установите последнюю версию Docker Engine и содержащую
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  8. Проверить версию Docker
    docker –version
  9. Управляйте Docker как пользователь без полномочий root
    Создайте группу docker
    sudo groupadd docker
    Добавьте своего пользователя в группу docker
    sudo usermod -aG docker <your-user-name>
  10. Выход.
    exit
  11. Войдите обратно в терминал
  12. Убедитесь, что вы можете запускать команды Docker без sudo
    docker run hello-world
  13. После выполнения приведенной выше команды запуска вы должны увидеть следующий вывод:

  1. Обратитесь к следующему снимку экрана, чтобы увидеть команду, которую я выполнил.

Докеризируйте свое приложение Node.js в экземпляре EC2

После того, как вы установили Docker, следующим шагом будет Dockerize приложения. Докеризация приложения Nodejs означает написание файла Dockerfile с набором инструкций для создания образа Docker.

Давайте создадим Dockerfile и пример приложения Nodejs.

pwd
cd /home/ubuntu/Nodejs-docker

Создайте Dockerfile и вставьте в него следующее. Кроме того, вы можете скопировать содержимое отсюда.

vim Dockerfile

4. Создайте index.js и вставьте в него следующее. Кроме того, вы можете скопировать содержимое отсюда. Это будет наш пример приложения Nodejs.

vim index.js

В приведенном выше файле измените значения следующих переменных на те, которые применимы к вашему экземпляру RDS Amazon Aurora:

5. Создайте package.json и вставьте в него следующее. Кроме того, вы можете скопировать содержимое отсюда.

vim package.json

Обновите группу безопасности AWS

Чтобы получить доступ к приложению, нам нужно добавить правило в группу безопасности, разрешающее соединения на port 3000. Как я уже говорил ранее, мы можем получить доступ к приложению на port 3000, но это не рекомендуется. Продолжайте читать, чтобы узнать наши рекомендации.

  1. Перейдите на панель инструментов EC2, выберите экземпляр, перейдите на вкладку «Безопасность», а затем нажмите ссылку «Группы безопасности».

2. Выберите вкладку «Правила для входящих подключений» и нажмите кнопку «Изменить правила для входящих подключений».

3. Добавьте новое правило, разрешающее внешнее подключение с «MyIp» на порту 3000.

Разверните сервер Node.js на сервере EC2 (экземпляр)

  1. Давайте создадим образ Docker из кода, который у нас есть.
    cd /home/ubuntu/Nodejs-docker
    docker build -t Nodejs

2. Запустите контейнер, используя только что созданный образ, и выставьте его на port 3000.

docker run –name Nodejs -d -p 3000:3000 Nodejs

3. Вы видите, что контейнер запущен.
docker ps

4. Вы даже можете проверить логи контейнера.
docker logs Nodejs

Теперь у нас запущен Docker-контейнер приложения Nodejs.

5. Теперь вы можете получить доступ к приложению из браузера на port 3000.

  • Проверьте статус заявки на /status api с помощью браузера: http://‹public-ip-of-ec2-instance›:3000/status

  • Вы можете вставить некоторые данные в приложение on /insert api с помощью приложения Почтальон с помощью POST-запроса.
    http://‹public-ip-of-ec2-instance›:3000/[email protected]&age=2

  • Вы можете получить список данных из своего приложения, используя /list api из браузера:
    http://‹public-ip-of-ec2-instance›:3000/list

6. Кроме того, вы можете использовать команду curl из экземпляра EC2 для проверки состояния, вставки данных и списка данных.
curl -XGET “http://<public-ip-of-ec2-instance>:3000/list”
curl -XPOST “http://<public-ip-of-ec2-instance>:3000/insert?username=abc&email=[email protected]&age=26″

7. Остановите и извлеките контейнер
docker stop Nodejs
docker rm Nodejs

В этом разделе мы попытались получить доступ к API, доступным для приложения, напрямую, используя Public IP:Port экземпляра EC2. Однако выставлять во внешний мир нестандартные порты в Security Group категорически не рекомендуется.

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

Чтобы преодолеть этот сценарий, рекомендуется использовать Nginx.

Настройка Nginx

Давайте создадим Nginx conf, который будет использоваться внутри контейнера Nginx через Docker Volume. Создайте файл и скопируйте в него следующее содержимое. Кроме того, вы можете скопировать содержимое отсюда.

cd /home/ubuntu/Nodejs-docker
mkdir nginx-conf
vim nginx-conf/nginx.conf

В приведенном выше файле внесите изменения в три строки, указанные ниже. Замените мой subdomain.domain, то есть Nodejs.devopslee, на тот, который вы хотите и имеете:

  1. server_name Nodejs.devopslee.com www.Nodejs.devopslee.com;
  2. ssl_certificate /etc/letsencrypt/live/Nodejs.devopslee.com/fullchain.pem;
  3. ssl_certificate_key /etc/letsencrypt/live/Nodejs.devopslee.com/privkey.pem;

Зачем вам нужен Nginx перед службой Node.js?

Наше приложение Nodejs работает на нестандартном port 3000. Nodejs предоставляет способ использования HTTPS. Однако нам не следует беспокоиться о настройке протокола и управлении SSL-сертификатами, срок действия которых периодически истекает в базе кода приложения.

Чтобы преодолеть эти сценарии, нам нужно иметь перед собой Nginx с завершением SSL и пересылать запросы пользователей на Nodejs. Nginx — это особый тип веб-сервера, который может выступать в качестве обратного прокси-сервера, балансировщика нагрузки, почтового прокси-сервера и кэша HTTP. Здесь мы будем использовать Nginx в качестве обратного прокси-сервера для перенаправления запросов в наше приложение Nodejs и завершения SSL.

Почему не Апач?

Apache также является веб-сервером и может действовать как обратный прокси-сервер. Он также поддерживает терминацию SSL. Однако есть несколько вещей, которые отличают Nginx от Apache. По следующим причинам Nginx часто предпочтительнее Apache:

  1. Nginx имеет один или несколько процессов, асинхронный и основанный на событиях. Apache пытается создавать новые процессы и новые потоки для каждого запроса в каждом соединении.
  2. Nginx легкий, масштабируемый и простой в настройке. С другой стороны, Apache великолепен, но имеет более высокий барьер для обучения.

Docker-Compose

Далее давайте установим docker-compose.

  1. Загрузите текущую стабильную версию Docker Compose
    sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
  2. Примените разрешения на выполнение к бинарному файлу docker-compose, который мы только что скачали на предыдущем шаге.
    sudo chmod +x /usr/local/bin/docker-compose
  3. Проверьте успешность установки, проверив версию docker-compose
    docker-compose –version
  4. Создайте файл docker-compose.yaml. Кроме того, вы можете скопировать содержимое отсюда. Это будет использоваться для вращения контейнеров Docker нашего технического стека приложений, который у нас есть.
    cd /home/ubuntu/Nodejs-docker
    vim docker-compose.yml

В приведенном выше файле внесите изменения в строку, указанную ниже. Замените мой subdomain.domain, то есть Nodejs.devopslee, на тот, который вы хотите и имеете. Изменить IP для вашей личной электронной почты.

–email EMAIL. Электронная почта, используемая для регистрации и восстановления контакта.

  1. команда: certonly –webroot –webroot-path=/var/www/html –email [email protected] –agree-tos –no-eff-email –staging -d Nodejs.devopslee.com -d www.Nodejs.devopslee.com

Обновите группы безопасности AWS

На этот раз откройте ports 80 и 443 в группе безопасности, прикрепленной к экземпляру EC2. Так же убираем 3000 так как он ненужный так как приложение работает через port 443.

Включить изменение DNS

Здесь я создал поддомен Nodejs.devopslee.com, который будет использоваться для доступа к образцу приложения Nodejs с использованием доменного имени, а не с использованием IP-адреса.

Вы можете создать свой субдомен на AWS, если у вас уже есть домен.

Создайте два «набора записей типа A» в размещенной зоне со значением в качестве общедоступного IP-адреса экземпляров EC2.

Один набор записей будет subdomain.domain.com, а другой — www.subdomain.domain.com.

Здесь я создал Nodejs.devopslee.com и www.Nodejs.devopslee.com, оба указывающие на общедоступный IP-адрес экземпляра EC2.

Примечание. Я не назначал эластичный IP-адрес экземпляру EC2. Рекомендуется назначить эластичный IP-адрес, а затем использовать его в наборе записей. При перезапуске экземпляра EC2 вам не нужно обновлять IP-адрес в наборе записей, поскольку общедоступные IP-адреса меняются после перезапуска экземпляра EC2.

Теперь скопируйте значения «Type NS Recordset». Они понадобятся нам в следующих шагах.

Перейдите в зону хостинга вашего домена и создайте новую Запись с вашим subdomain.domain.com, добавив значения NS, которые вы скопировали на предыдущем шаге.

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

В моем случае я могу использовать Nodejs.devopslee.com для доступа к приложению Nodejs. Мы еще не закончили. Следующим шагом является защита нашего веб-приложения Nodejs.

Включить SSL-сертификат

Давайте сгенерируем наш ключ для Nginx.

  1. cd /home/ubuntu/Nodejs-docker
  2. mkdir views
  3. mkdir dhparam
  4. sudo openssl dhparam -out /home/ubuntu/Nodejs-docker/dhparam/dhparam-2048.pem 2048

Развертывание приложения Nodejs в экземпляре EC2

Мы готовы запустить наше приложение Nodejs с помощью docker-compose.

Это запустит наше приложение Nodejs на port 3000, Nginx с SSL на port 80 и 443. Nginx будет перенаправлять запросы в приложение Nodejs при доступе с использованием домена. У него также будет клиент Certbot, который позволит нам получить наши сертификаты.

  1. докер-компоновать

После того, как вы нажмете приведенную выше команду, вы увидите следующий вывод. Вы должны увидеть сообщение «Успешно получены сертификаты».

Примечание. Приведенная выше команда docker-compose запускает контейнеры и остается подключенным к терминалу. Мы не использовали опцию -d, чтобы отсоединить его от терминала.

У вас все настроено. Теперь нажмите URL-адрес в браузере, и ваше приложение Nodejs должно быть доступно по HTTPS.

Вы также можете попробовать запустить приложение с помощью команды curl:

  1. Список данных из приложения
    curl https://Nodejs.devopslee.com/list
  2. Вставить запись в заявку
    curl -XPOST “https://Nodejs.devopslee.com/insert?username=abc&[email protected]&age=28
  3. Снова перечислите данные, чтобы проверить, были ли они вставлены или нет
    curl https://Nodejs.devopslee.com/list

4. Проверить статус приложения
https://Nodejs.devopslee.com/status

5. Нажмите URL-адрес в браузере, чтобы получить список записей в базе данных.
https://Nodejs.devopslee.com/list

Автоматическое обновление SSL-сертификатов

Сертификаты, которые мы генерируем с помощью Let’s Encrypt, действительны в течение 90 дней. Следовательно, нам нужен способ автоматического обновления наших сертификатов, чтобы у нас не было сертификатов с истекшим сроком действия.

Чтобы автоматизировать этот процесс, давайте создадим скрипт, который будет обновлять для нас сертификаты, и cronjob для планирования выполнения этого скрипта.

  1. Создайте скрипт с –dry-run для тестирования нашего скрипта
    vim renew-cert.sh
#!/bin/bash
COMPOSE="/usr/local/bin/docker-compose --no-ansi"
DOCKER="/usr/bin/docker"
cd /home/ubuntu/Nodejs-docker/
$COMPOSE run certbot renew --dry-run && $COMPOSE kill -s SIGHUP webserver
$DOCKER system prune -af

2. Измените права доступа к скрипту, чтобы сделать его исполняемым.
chmod 774 renew-cert.sh

3. Создайте задание cron
sudo crontab -e

*/5 * * * * /home/ubuntu/Nodejs-docker/renew-cert.sh >> /var/log/cron.log 2>&1

4. Перечислите задания cron.
sudo crontab -l

5. Проверьте журналы задания cron через пять минут, так как мы установили задание cron, которое будет выполняться каждую пятую минуту
tail -f /var/log/cron.lo

Вы можете увидеть «Имитация обновления существующего сертификата…». на скриншоте выше. Это потому, что мы указали в скрипте опцию –dry-run.

6. Удалим из скрипта опцию –dry-run.
vim renew-cert.sh

#!/bin/bash
COMPOSE="/usr/local/bin/docker-compose --no-ansi"
DOCKER="/usr/bin/docker"
cd /home/ubuntu/Nodejs-docker/
$COMPOSE run certbot renew && $COMPOSE kill -s SIGHUP webserver
$DOCKER system prune -af

На этот раз вы не увидите сообщение «Имитация обновления существующего сертификата». Теперь скрипт проверит, нужно ли обновлять сертификаты. При необходимости он продлит сертификаты. Если нет, он проигнорирует и скажет: «Сертификаты еще не подлежат обновлению».

Что дальше в разделе «Как развернуть приложение Nodejs на AWS»?

Мы закончили настройку нашего приложения Nodejs с помощью Docker на экземпляре AWS EC2. Однако, когда вы хотите развернуть высокодоступное приложение для производственной и других сред, в игру вступают другие вещи.

Следующим шагом является использование оркестратора, такого как ECS или EKS, для управления нашим приложением Nodejs на производственном уровне. Репликация, автоматическое масштабирование, балансировка нагрузки, маршрутизация трафика и мониторинг работоспособности контейнера не входят в стандартную комплектацию Docker и Docker-Compose. Для управления архитектурой контейнеров и микросервисов в масштабе вам понадобится инструмент оркестрации контейнеров, такой как ECS или EKS.

Кроме того, мы не использовали какой-либо репозиторий Docker для хранения образа Docker нашего приложения Nodejs. Вы можете использовать AWS ECR, полностью управляемый реестр контейнеров AWS, предлагающий высокопроизводительный хостинг.

Если вы хотите создать облачную архитектуру, посмотрите наше видео Что такое облачная архитектура и как ее внедрить?

Читайте также: Amazon ECS против EKS: лучший контейнерный сервис AWS

Заключение

Развертывание приложения Nodejs в AWS — это не просто создание приложения Nodejs и его развертывание в инстансе AWS EC2 с самоуправляемой базой данных. Существуют различные аспекты, такие как контейнеризация приложения Nodejs, завершение SSL и домен для приложения, которые появляются, когда вы хотите ускорить разработку программного обеспечения, развертывание, безопасность, надежность и избыточность данных.

В этой статье мы рассмотрели шаги по докеризации примера приложения Nodejs. Мы использовали AWS RDS Amazon Aurora и развернули приложение Nodejs в экземпляре EC2 с помощью Docker и Docker-Compose. Мы включили завершение SSL для нашего поддомена, чтобы использовать его для доступа к приложению Nodejs.

Кроме того, мы увидели шаги по автоматизации проверки домена и создания SSL-сертификата с помощью Certbot и обнаружили способ автоматизировать процесс обновления сертификата, который действителен в течение 90 дней.

Этого достаточно, чтобы начать работу с образцом приложения Nodejs. Однако когда дело доходит до управления вашими приложениями реального времени, сотнями микросервисов, тысячами контейнеров, томами, сетью, секретами и выходом-входом, вам нужен инструмент оркестрации контейнеров.

Существуют различные инструменты, такие как Kubernetes с собственным хостингом, AWS ECS и AWS EKS, которые можно использовать для управления жизненным циклом контейнеров в реальных приложениях.

Want to connect with the author?
Article originally posted at ClickIT