Postavite aplikaciju za proljetno pokretanje na AWS Beanstalk

1. Pregled

U ovom uputstvu pokazat ćemo kako rasporediti aplikaciju iz našeg jednostavnog programa Bootstrap pomoću vodiča Spring Boot na AWS Elastic Beanstalk.

Kao dio ovoga ćemo:

  • Instalirajte i konfigurirajte AWS CLI alate
  • Stvorite Beanstalk projekt i implementaciju MySQL-a
  • Konfigurirajte aplikaciju za MySQL u AWS RDS-u
  • Primijenite, testirajte i prilagodite aplikaciju

2. Konfiguracija elastičnog zrna graha AWS

Kao preduvjet, trebali smo se registrirati na AWS i stvoriti Java 8 okruženje na Elastic Beanstalk. Također moramo instalirati AWS CLI koji će nam omogućiti povezivanje s našim okruženjem.

Dakle, s obzirom na to, moramo se prijaviti i inicijalizirati našu aplikaciju:

cd ... / spring-boot-bootstrap eb init 
> Odaberite zadanu regiju 1) us-istok-1: SAD istok (Sjeverna Virginia) 2) us-zapad-1: SAD zapad (Sjeverna Kalifornija) 3) us-zapad-2: SAD zapad (Oregon) 4) eu-zapad-1: EU (Irska) 5) eu-central-1: EU (Frankfurt) 6) ap-jug-1: azijski Pacifik (Mumbai) 7) ap-jugoistok-1: azijski pacifik (Singapur) 8) ap-jugoistok-2: Azijski Pacifik (Sydney) 9) ap-sjeveroistok-1: Azijski Pacifik (Tokio) 10) ap-sjeveroistok-2: Azijski Pacifik (Seoul) 11) sa-istok-1: Južna Amerika (Sao Paulo ) 12) cn-sjever-1: Kina (Peking) 13) cn-sjeverozapad-1: Kina (Ningxia) 14) us-istok-2: istok SAD-a (Ohio) 15) ca-central-1: Kanada (središnja) 16) eu-zapad-2: EU (London) 17) eu-zapad-3: EU (Pariz) 18) eu-sjever-1: EU (Stockholm) (zadana vrijednost je 3):

Kao što je gore prikazano, od nas će se zatražiti da odaberemo regiju.

Napokon, možemo odabrati aplikaciju:

> Odaberite aplikaciju koju ćete koristiti 1) baeldung-demo 2) [Stvori novu aplikaciju] (zadana vrijednost je 2): 

U ovo vrijeme, CLI će stvoriti datoteku s imenom .elasticbeanstalk / config.yml. Ova će datoteka zadržati zadane vrijednosti za projekt.

3. Baza podataka

Sada možemo stvoriti bazu podataka na AWS web konzoli ili s CLI-jem koristeći:

eb stvoriti --jednostruku - bazu podataka

Morat ćemo slijediti upute za unos korisničkog imena i lozinke.

S našom bazom podataka kreirajmo sada RDS vjerodajnice za našu aplikaciju. To ćemo učiniti na proljetnom profilu pod nazivom zrno graha stvaranjem src / main / resources / application-beanstalk.properties u našoj aplikaciji:

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

Proljeće će tražiti imanje s imenom rds.ime hosta kao varijabla okoliša tzv RDS_HOSTNAME. Ista logika primijenit će se i na ostalo.

4. Primjena

Sad ćemo dodati zrno grahaspecifični Maven profil na pom.xml:

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

Dalje ćemo navesti artefakt u konfiguracijskoj datoteci Elastic Beanstalk .elasticbeanstalk / config.yml:

razmestiti: artefakt: target / spring-boot-bootstrap-eb.jar 

I na kraju, uključit ćemo dvije varijable okoliša u Elastično zrno graha. Prvi će odrediti aktivne proljetne profile, a drugi će osigurati upotrebu zadanog porta 5000 koji očekuje Beanstalk:

eb setenv SPRING_PROFILES_ACTIVE = beanstalk, mysql eb setenv SERVER_PORT = 5000

5. Razmještanje i ispitivanje

Sada smo spremni za izgradnju i implementaciju:

mvn čist paket spring-boot: prepakiranje eb raspoređivanje 

Zatim ćemo provjeriti status i odrediti DNS ime postavljene aplikacije:

status eb

I naš bi izlaz trebao biti otprilike:

Pojedinosti o okolišu za: BaeldungDemo-env Naziv aplikacije: baeldung-demo Regija: us-east-2 Postavljena verzija: app-181216_154233 ID okoliša: e-42mypzuc2x Platforma: arn: aws: elasticbeanstalk: us-east-2 :: platforma / Java 8 izvodi se na 64-bitnom Amazon Linux / 2.7.7 Razina: WebServer-Standard-1.0 CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com Ažurirano: 2018-12-16 13: 43: 22.294000 + 00: 00 Status: Spremno Zdravlje: Zeleno

Sada možemo testirati aplikaciju - primijetite upotrebu polja CNAME kao DNS za dovršavanje URL-a.

Dodajmo sada knjigu u našu knjižnicu:

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

I, ako je sve u redu, trebali bismo dobiti nešto poput:

HTTP / 1.1 201 Upravljanje predmemorijom: bez privremene memorije, bez spremanja, max-age = 0, mora ponovno potvrditi vezu: neprekidno Sadržaj Tip sadržaja: application / json; charset = UTF-8 Datum: srijeda, 19. prosinca 2018. 15:36:31 GMT Istječe: 0 Pragma: ne-predmemorija Poslužitelj: nginx / 1.12.1 Prijenos-kodiranje: razvrstani 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. Skaliranje aplikacije

Na kraju, razmještamo razmjenu tako da pokreće dvije instance:

eb skala 2

Beanstalk će sada pokretati 2 instance aplikacije i promet uravnoteženja tereta u obje instance.

Automatsko skaliranje za proizvodnju malo je više uključeno, pa ćemo to ostaviti za još jedan dan.

7. Zaključak

U ovom uputstvu mi:

  • Instalirali i konfigurirali AWS Beanstalk CLI i konfigurirali mrežno okruženje
  • Primijenio je MySQL uslugu i konfigurirao svojstva veze baze podataka
  • Izgradili smo i implementirali našu konfiguriranu aplikaciju Spring Boot i
  • Testirao i skalirao aplikaciju

Za više pojedinosti pogledajte dokumentaciju Beanstalk Java.

Kao i uvijek, kompletni izvorni kod naših primjera nalazi se ovdje, na GitHub-u.