Distribuere en Spring Boot-applikasjon til AWS Beanstalk

1. Oversikt

I denne opplæringen viser vi hvordan du distribuerer et program fra vår Bootstrap en enkel applikasjon ved hjelp av Spring Boot-opplæringen til AWS Elastic Beanstalk.

Som en del av dette vil vi:

  • Installer og konfigurer AWS CLI-verktøy
  • Opprett et Beanstalk-prosjekt og MySQL-distribusjon
  • Konfigurer applikasjonen for MySQL i AWS RDS
  • Distribuere, teste og skalere applikasjonen

2. AWS elastisk bønnestengelkonfigurasjon

Som en forutsetning skulle vi ha registrert oss på AWS og opprettet et Java 8-miljø på Elastic Beanstalk. Vi må også installere AWS CLI som gjør at vi kan koble oss til miljøet vårt.

Så gitt det, må vi logge på og initialisere søknaden:

cd ... / spring-boot-bootstrap eb init 
> Velg en standardregion 1) us-øst-1: USA-øst (N. Virginia) 2) us-vest-1: USA-vest (N. California) 3) us-vest-2: USA-vest (Oregon) 4) eu-vest-1: EU (Irland) 5) eu-sentral-1: EU (Frankfurt) 6) ap-sør-1: Stillehavs-Asia (Mumbai) 7) ap-sørøst-1: Stillehavs-Asia (Singapore) 8) ap-sørøst-2: Stillehavs-Asia (Sydney) 9) ap-nordøst-1: Stillehavs-Asia (Tokyo) 10) ap-nordøst-2: Stillehavs-Asia (Seoul) 11) sa-øst-1: Sør-Amerika (Sao Paulo ) 12) cn-nord-1: Kina (Beijing) 13) cn-nordvest-1: Kina (Ningxia) 14) us-øst-2: USA øst (Ohio) 15) ca-sentral-1: Canada (sentral) 16) eu-west-2: EU (London) 17) eu-west-3: EU (Paris) 18) eu-north-1: EU (Stockholm) (standard er 3):

Som vist ovenfor, blir vi bedt om å velge en region.

Til slutt kan vi velge applikasjonen:

> Velg et program som skal brukes 1) baeldung-demo 2) [Opprett nytt program] (standard er 2): 

På dette tidspunktet CLI oppretter en fil som heter .elasticbeanstalk / config.yml. Denne filen beholder standardinnstillingene for prosjektet.

3. Database

Nå kan vi opprette databasen på AWS Web Console eller med CLI ved å bruke:

eb opprette - enkelt - database

Vi må følge instruksjonene for å oppgi brukernavn og passord.

Når databasen vår er opprettet, la oss nå konfigurere RDS-legitimasjonen for applikasjonen vår. Vi gjør det i en vårprofil som heter bønnestengel ved å skape src / main / resources / application-beanstalk.properties i søknaden vår:

spring.datasource.url = jdbc: mysql: // $ {rds.hostname}: $ {rds.port} / $ {rds.db.name} spring.datasource.username = $ {rds.username} spring.datasource. passord = $ {rds.password} 

Våren vil søke etter eiendommen som heter rds.hostname som en miljøvariabel kalt RDS_HOSTNAME. Den samme logikken vil gjelde for resten.

4. Søknad

Nå legger vi til en Beanstalkspesifikk Maven-profil til pom.xml:

 beanstalk $ {project.name} -eb org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-compiler-plugin ** / cloud / config / *. java 

Deretter spesifiserer vi gjenstanden i konfigurasjonsfilen Elastic Beanstalk .elasticbeanstalk / config.yml:

deploy: artifact: target / spring-boot-bootstrap-eb.jar 

Og til slutt vil vi inkludere to miljøvariabler i Elastic Beanstalk. Den første vil spesifisere de aktive vårprofilene, og den andre vil sikre bruk av standardport 5000 som forventes av Beanstalk:

eb setenv SPRING_PROFILES_ACTIVE = bønnestengel, mysql eb setenv SERVER_PORT = 5000

5. Implementering og testing

Nå er vi klare til å bygge og distribuere:

mvn ren pakke spring-boot: ompakking eb distribuere 

Deretter sjekker vi statusen og bestemmer DNS-navnet til den distribuerte applikasjonen:

eb-status

Og produksjonen vår skal være omtrent som:

Miljødetaljer for: BaeldungDemo-env Søknadsnavn: baeldung-demo Region: us-east-2 Distribuert Versjon: app-181216_154233 Miljø-ID: e-42mypzuc2x Plattform: arn: aws: elasticbeanstalk: us-east-2 :: plattform / Java 8 kjører på 64bit Amazon Linux / 2.7.7 Tier: WebServer-Standard-1.0 CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com Oppdatert: 2018-12-16 13: 43: 22.294000 + 00: 00 Status: Klar helse: Grønn

Vi kan nå teste applikasjonen - legg merke til bruken av CNAME-feltet som DNS for å fullføre URL-en.

La oss legge til en bok i biblioteket vårt nå:

http POST //baeldungdemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com/api/books author = "Iain M. Banks"

Og hvis alt er bra, bør vi få noe sånt som:

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 Utløper: 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. Skalering av applikasjonen

Til slutt skalerer vi distribusjonen til å kjøre to forekomster:

eb skala 2

Beanstalk kjører nå to forekomster av applikasjonen og belastningsbalansetrafikk på tvers av begge forekomster.

Automatisk skalering for produksjon er litt mer involvert, så vi lar det stå en dag til.

7. Konklusjon

I denne opplæringen:

  • Installert og konfigurert AWS Beanstalk CLI og konfigurert et online miljø
  • Implementerte en MySQL-tjeneste og konfigurerte databasetilkoblingsegenskapene
  • Bygget og distribuert vår konfigurerte Spring Boot-applikasjon, og
  • Testet og skalert applikasjonen

For mer informasjon, sjekk Beanstalk Java-dokumentasjonen.

Som alltid er den komplette kildekoden til eksemplene våre her, på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found