Разгърнете приложение за пролетно стартиране в AWS Beanstalk

1. Общ преглед

В този урок ще покажем как да разположим приложение от нашия Bootstrap просто приложение, като използваме урока Spring Boot към AWS Elastic Beanstalk.

Като част от това ще:

  • Инсталирайте и конфигурирайте AWS CLI инструменти
  • Създайте проект Beanstalk и внедряване на MySQL
  • Конфигурирайте приложението за MySQL в AWS RDS
  • Внедряване, тестване и мащабиране на приложението

2. Конфигурация на AWS Elastic Beanstalk

Като предварително условие трябваше да се регистрираме в AWS и да създадем среда Java 8 на Elastic Beanstalk. Също така трябва да инсталираме AWS CLI, който ще ни позволи да се свържем с нашата среда.

И така, като се има предвид това, трябва да влезем и да инициализираме нашето приложение:

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 Web Console или с CLI, като използваме:

eb create --single --database

Ще трябва да следваме инструкциите, за да предоставим потребителско име и парола.

След като създадем нашата база данни, нека конфигурираме сега идентификационните данни RDS за нашето приложение. Ще направим това в пролетен профил на име 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} 

Spring ще търси свойството с име rds.hostname като променлива на околната среда, наречена RDS_HOSTNAME . Същата логика ще важи и за останалите.

4. Приложение

Сега, ние ще добавим Beanstalk - Профил на специфична 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 

И накрая, ще включим две променливи на околната среда в Elastic Beanstalk. Първият ще посочи активните профили на Spring, а вторият ще осигури използването на порт 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 //baeldungdemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com/api/books 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 CLI и конфигурира онлайн среда
  • Разполага услуга MySQL и конфигурира свойствата на свързване на базата данни
  • Изгради и внедри нашето конфигурирано приложение Spring Boot и
  • Тества и скалира приложението

За повече подробности вижте документацията на Beanstalk Java.

Както винаги, пълният изходен код на нашите примери е тук, върху GitHub.