Рубрики
Без рубрики

Развертывание приложения Spring Boot в AWS Beanstalk

Простое руководство по развертыванию приложений Spring Boot в AWS Beanstalk

Автор оригинала: 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 .