Автор оригинала: Corneil du Plessis.
1. Обзор
В этом уроке мы покажем, как развернуть приложение из нашего Bootstrap простого приложения с помощью Spring Boot tutorial в AWS Elastic Beanstalk .
В рамках этого мы будем:
- Установка и настройка инструментов AWS CLI
- Создание проекта Beanstalk и развертывание MySQL
- Настройка приложения для MySQL в AWS RDS
- Развертывание, тестирование и масштабирование приложения
2. Конфигурация эластичного бобового стебля AWS
В качестве предварительного условия мы должны были зарегистрироваться на AWS и создал среду Java 8 на эластичном бобовом стебле . Нам также необходимо установите интерфейс командной строки AWS что позволит нам подключиться к нашей среде.
Итак, учитывая это, нам нужно войти в систему и инициализировать наше приложение:
cd .../spring-boot-bootstrap eb init
> Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-south-1 : Asia Pacific (Mumbai) 7) ap-southeast-1 : Asia Pacific (Singapore) 8) ap-southeast-2 : Asia Pacific (Sydney) 9) ap-northeast-1 : Asia Pacific (Tokyo) 10) ap-northeast-2 : Asia Pacific (Seoul) 11) sa-east-1 : South America (Sao Paulo) 12) cn-north-1 : China (Beijing) 13) cn-northwest-1 : China (Ningxia) 14) us-east-2 : US East (Ohio) 15) ca-central-1 : Canada (Central) 16) eu-west-2 : EU (London) 17) eu-west-3 : EU (Paris) 18) eu-north-1 : EU (Stockholm) (default is 3):
Как показано выше, нам будет предложено выбрать регион.
Наконец, мы можем выбрать приложение:
> Select an application to use 1) baeldung-demo 2) [ Create new Application ] (default is 2):
В это время CLI создаст файл с именем .elasticbeanstalk/config.yml . Этот файл сохранит значения по умолчанию для проекта.
3. База данных
Теперь мы можем создать базу данных на веб-консоли AWS или с помощью CLI, используя:
eb create --single --database
Нам нужно будет следовать инструкциям, чтобы указать имя пользователя и пароль.
Теперь, когда наша база данных создана, давайте настроим учетные данные RDS для нашего приложения. Мы сделаем это в профиле Spring с именем beanstalk , создав src/main/resources/application-beanstalk.properties в нашем приложении:
spring.datasource.url=jdbc:mysql://${rds.hostname}:${rds.port}/${rds.db.name} spring.datasource.username=${rds.username} spring.datasource.password=${rds.password}
Весна будет искать свойство с именем Весна будет искать свойство с именем как переменная среды, называемая RDS_HOSTNAME . Та же логика применима и к остальным.
4. Применение
Теперь мы добавим бобовый стебель – конкретный профиль Maven в pom.xml :
beanstalk ${project.name}-eb org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-compiler-plugin **/cloud/config/*.java
Затем мы зададим артефакт в файле конфигурации Elastic Beanstalk .elasticbeanstalk/config.yml :
deploy: artifact: target/spring-boot-bootstrap-eb.jar
И, наконец, мы включим две переменные среды в Эластичный бобовый стебель. Первый из них будет указывать активные профили пружины, а второй обеспечит использование порта по умолчанию 5000, ожидаемого Beanstalk:
eb setenv SPRING_PROFILES_ACTIVE=beanstalk,mysql eb setenv SERVER_PORT=5000
5. Развертывание и тестирование
Теперь мы готовы к сборке и развертыванию:
mvn clean package spring-boot:repackage eb deploy
Далее мы проверим состояние и определим DNS-имя развернутого приложения:
eb status
И наш результат должен быть примерно таким:
Environment details for: BaeldungDemo-env Application name: baeldung-demo Region: us-east-2 Deployed Version: app-181216_154233 Environment ID: e-42mypzuc2x Platform: arn:aws:elasticbeanstalk:us-east-2::platform/Java 8 running on 64bit Amazon Linux/2.7.7 Tier: WebServer-Standard-1.0 CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com Updated: 2018-12-16 13:43:22.294000+00:00 Status: Ready Health: Green
Теперь мы можем протестировать приложение – обратите внимание на использование поля CNAME в качестве DNS для заполнения URL-адреса.
Давайте добавим книгу в нашу библиотеку прямо сейчас:
http POST http://baeldungdemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com/api/books title="The Player of Games" author="Iain M. Banks"
И, если все будет хорошо, мы должны получить что-то вроде:
HTTP/1.1 201 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Connection: keep-alive Content-Type: application/json;charset=UTF-8 Date: Wed, 19 Dec 2018 15:36:31 GMT Expires: 0 Pragma: no-cache Server: nginx/1.12.1 Transfer-Encoding: chunked X-Content-Type-Options: nosniff X-Frame-Options: DENY X-XSS-Protection: 1; mode=block { "author": "Iain M. Banks", "id": 5, "title": "The Player of Games" }
6. Масштабирование приложения
Наконец, мы масштабируем развертывание для запуска двух экземпляров:
eb scale 2
Теперь Beanstalk будет запускать 2 экземпляра приложения и балансировать нагрузку на трафик в обоих экземплярах.
Автоматическое масштабирование для производства немного более задействовано , поэтому мы оставим это на другой день.
7. Заключение
В этом уроке мы:
- Установил и настроил интерфейс командной строки AWS Beanstalk и настроил интерактивную среду
- Развернул службу MySQL и настроил свойства подключения к базе данных
- Построил и развернул наше настроенное приложение Spring Boot, а также
- Протестировано и масштабировано приложение
Для получения более подробной информации ознакомьтесь с документацией Beanstalk Java .
Как всегда, полный исходный код наших примеров находится здесь, на GitHub .