Вече не е необходимо да управлявате екземпляри на EC2
Знаете ли как да хоствате вашето Spring Boot приложение, без да се притеснявате за създаването и поддържането на базови екземпляри на EC2, и как да можете да мащабирате автоматично достатъчно бързо, за да обслужвате всяко натоварване? Е, можете да използвате AWS Fargate за това.
Нека да разгледаме. Тази статия има две части:
- Създаване на докер изображение на вашето Springboot приложение и качването му в AWS ECR (Регистър на еластични контейнери).
- Обслужване на вашето уеб приложение с помощта на 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 и памет. След като приключите с експериментирането, не забравяйте да изтриете услугата и балансьорите на натоварването и спрете задачите.
Благодаря ти!