Вече не е необходимо да управлявате екземпляри на EC2

Знаете ли как да хоствате вашето Spring Boot приложение, без да се притеснявате за създаването и поддържането на базови екземпляри на EC2, и как да можете да мащабирате автоматично достатъчно бързо, за да обслужвате всяко натоварване? Е, можете да използвате AWS Fargate за това.

Нека да разгледаме. Тази статия има две части:

  1. Създаване на докер изображение на вашето Springboot приложение и качването му в AWS ECR (Регистър на еластични контейнери).
  2. Обслужване на вашето уеб приложение с помощта на AWS Fargate.

Предпоставки

  • AWS акаунт
  • AWS CLI
  • Малко git знания
  • Докер
  • Мейвън
  • Java 8

Част 1: Създаване на докер изображение на вашето Springboot приложение и качването му в AWS ECR (регистър на еластични контейнери)

За да започнете, нека създадем Docker файл за вашето съществуващо приложение Spring Boot. За тази статия създадох примерно уеб приложение Spring Boot: springboot-docker-container-demo, а ето и Dockerfile:

Няколко неща за Dockerfile

Docker файлът използва openjdk:8-jdk-alpine като основно изображение.

Основното изображение няма налична програма за извиване, която е необходима за проверка на състоянието на ECS. Инсталира се чрез apk команда.

Сега, cd в директорията на проекта...

$ mvn clean install
$ mvn package
$ docker build -t serverlessdemo .
$ docker images  # this will show all the docker images & image IDs

Можете да стартирате своя докер образ на вашата локална машина:

$ docker run -e EXTERNAL_PARAM=external-param1 serverlessdemo

Можете да намерите своя IP адрес на докер контейнер и да го изпробвате в браузър:

$ docker ps  # get all running container IDs
$ docker inspect <demo's container ID>
# find the IP address of the container from the output

Сега, нека създадем AWS Elastic Container Repository.

За да получите достъп до хранилището, трябва да инсталирате AWS CLI и да го конфигурирате с API ключ. Обърнете се към „това“.

# Login to your ECR repo using docker
$ aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <Repo URI>

Обърнете се към това за пълно ръководство за това как да влезете във вашето репо.

Сега маркирайте изображението си и го избутайте във вашето хранилище.

$ docker image tag serverlessdemo <Repo URI>
$ docker push <Repo URI>

Страхотно, вече имате вашия докер образ, съхранен в AWS ECR!

Част 2: Обслужване на вашето уеб приложение чрез AWS Fargate

Нека се захванем с него.

Можете да стартирате своя клъстер в четири стъпки...

Стъпка 1:

Command: CMD-SHELL,curl -f http://localhost/welcome || exit 1
Interval: 5
Timeout: 5
Start period: 20  # Because Spring Boot takes ~20 sec to start up
Retries: 3

CPU Units: 256  # 256 units represents 0.25 vCPU
EXTERNAL_PARAM - container_param_1

Стъпка 2:

Стъпка 3: Дайте му име

Стъпка 4: Преглед и създаване

Сега вашият ECS клъстер е готов и работи!

Можете да разгледате регистрационните файлове на приложението в AWS CloudWatch.

Въз основа на политиката за проверка на състоянието, ако бъде открита повреда, този контейнер автоматично ще бъде заменен с нов.

Но това не е всичко. Можете да конфигурирате автоматичното мащабиране, за да увеличите или намалите броя на контейнерите.

Добре, нека направим и това!

Първо трябва да щракнете върху Актуализиране на услугата.

След това просто преминете към стъпка 3.

Тук можете да конфигурирате минималния, желания и максималния брой задачи. Задачата представлява контейнер.

Политиката за мащабиране е много важна. Можете да си поиграете с тези конфигурации и да измислите оптимални стойности за вашия случай на употреба. В даден момент може да има няколко действащи политики за мащабиране.

Експериментирането с ECS ще ви помогне да разберете някои страхотни нови трикове, които можете да използвате.

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

Благодаря ти!