Nasaďte aplikáciu Spring Boot na AWS Beanstalk

1. Prehľad

V tomto tutoriáli si ukážeme, ako nasadiť aplikáciu z nášho Bootstrapu a jednoduchej aplikácie pomocou tutoriálu Spring Boot na AWS Elastic Beanstalk.

V rámci toho:

  • Nainštalujte a nakonfigurujte nástroje AWS CLI
  • Vytvorte projekt Beanstalk a nasadenie MySQL
  • Nakonfigurujte aplikáciu pre MySQL v AWS RDS
  • Nasadenie, testovanie a škálovanie aplikácie

2. Konfigurácia AWS Elastic Beanstalk

Ako nevyhnutná podmienka sme sa mali zaregistrovať na AWS a vytvoriť prostredie Java 8 na Elastic Beanstalk. Musíme si tiež nainštalovať AWS CLI, ktoré nám umožní pripojenie k nášmu prostrediu.

Z tohto dôvodu sa musíme prihlásiť a inicializovať našu aplikáciu:

cd ... / spring-boot-bootstrap eb init 
> Vyberte predvolenú oblasť 1) us-východ-1: východ USA (Severná Virgínia) 2) us-západ-1: západ USA (Severná Kalifornia) 3) us-západ-2: západ USA (Oregon) 4) eu-západ-1: EÚ (Írsko) 5) eu-stred-1: EÚ (Frankfurt) 6) ap-juh-1: ázijsko-pacifický (Bombaj) 7) ap-juhovýchod-1: ázijsko-pacifický (Singapur) 8) ap-juhovýchod-2: Ázia a Tichomorie (Sydney) 9) ap-severovýchod-1: Ázia a Tichomorie (Tokio) 10) ap-severovýchod-2: Ázia a Tichomorie (Soul) 11) sa-východ-1: Južná Amerika (Sao Paulo ) 12) cn-sever-1: Čína (Peking) 13) cn-severozápad-1: Čína (Ningxia) 14) us-východ-2: východ USA (Ohio) 15) ca-central-1: Kanada (stred) 16) eu-west-2: EU (London) 17) eu-west-3: EU (Paris) 18) eu-north-1: EU (Stockholm) (predvolená hodnota je 3):

Ako je uvedené vyššie, zobrazí sa výzva na výber oblasti.

Nakoniec môžeme vybrať aplikáciu:

> Vyberte aplikáciu, ktorú chcete použiť 1) baeldung-demo 2) [Vytvoriť novú aplikáciu] (predvolená hodnota je 2): 

V tejto dobe CLI vytvorí súbor s názvom .elasticbeanstalk / config.yml. Tento súbor si zachová predvolené hodnoty pre projekt.

3. Databáza

Teraz môžeme vytvoriť databázu na AWS Web Console alebo pomocou CLI pomocou:

eb create --single --database

Budeme musieť postupovať podľa pokynov na zadanie používateľského mena a hesla.

Po vytvorení našej databázy teraz nakonfigurujme poverenia RDS pre našu aplikáciu. Urobíme to v jarnom profile s názvom fazuľa tvorením src / main / resources / application-beanstalk.properties v našej aplikácii:

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

Jar vyhľadá pomenovanú nehnuteľnosť rds.hostname ako premenná prostredia zvaná RDS_HOSTNAME. Rovnaká logika bude platiť aj pre zvyšok.

4. Aplikácia

Teraz pridáme Beanstalkkonkrétny profil Maven do pom.xml:

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

Ďalej zadáme artefakt do konfiguračného súboru Elastic Beanstalk .elasticbeanstalk / config.yml:

nasadiť: artefakt: target / spring-boot-bootstrap-eb.jar 

A nakoniec do Elastic Beanstalk zahrnieme dve premenné prostredia. Prvý bude špecifikovať aktívne jarné profily a druhý zabezpečí použitie predvoleného portu 5000, ktorý očakáva Beanstalk:

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

5. Nasadenie a testovanie

Teraz sme pripravení vytvoriť a nasadiť:

mvn clean package spring-boot: prebaliť eb nasadiť 

Ďalej skontrolujeme stav a určíme názov DNS nasadenej aplikácie:

status prílivu

A náš výstup by mal byť asi ako:

Podrobnosti o prostredí pre: BaeldungDemo-env Názov aplikácie: baeldung-demo Región: us-east-2 Nasadená verzia: app-181216_154233 ID prostredia: e-42mypzuc2x Platforma: arn: aws: elasticbeanstalk: us-east-2 :: platforma / Java 8 beží na 64bitovom systéme Amazon Linux / 2.7.7: WebServer-Standard-1.0 CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com Aktualizované: 2018-12-16 13:43:22.294000 + 00: 00 Stav: Pohotovosť Zdravie: Zelená

Teraz môžeme aplikáciu otestovať - ​​všimnite si použitie poľa CNAME ako DNS na dokončenie adresy URL.

Teraz si do knižnice pridajme knihu:

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

A ak je všetko v poriadku, mali by sme dostať niečo ako:

HTTP / 1.1 201 Cache-Control: no-cache, no-store, max-age = 0, must-revalidate Pripojenie: keep-alive Content-Type: application / json; charset = UTF-8 Dátum: St, 19. decembra 2018 15:36:31 GMT Vyprší: 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 {"autor": "Iain M. Banks", "id": 5, "title": "Hráč hier"}

6. Mierka aplikácie

Nakoniec škálováme nasadenie tak, aby bežalo dve inštancie:

stupnica prílivu 2

Aplikácia Beanstalk teraz spustí 2 inštancie aplikácie a prenos vyváženia záťaže v oboch inštanciách.

Automatické škálovanie pre produkciu je o niečo viac zapojené, takže si to necháme na ďalší deň.

7. Záver

V tomto výučbe:

  • Nainštalované a nakonfigurované rozhranie AWS Beanstalk CLI a nakonfigurované online prostredie
  • Nasadili sme službu MySQL a nakonfigurovali vlastnosti pripojenia k databáze
  • Postavili a nasadili našu nakonfigurovanú aplikáciu Spring Boot a
  • Aplikácia bola otestovaná a zmenšená

Ďalšie informácie nájdete v dokumentácii Java Beanstalk.

Úplný zdrojový kód našich príkladov je ako vždy tu, na GitHub.


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