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 graha–specifič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.