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 Beanstalk–konkré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.