๐ŸŒฑ Spring Cloud - Service Discovery (Netflix Eureka) ๐ŸŒฑ

Kim Dae Hyunยท2021๋…„ 5์›” 25์ผ
1

Spring-Cloud

๋ชฉ๋ก ๋ณด๊ธฐ
1/4
post-thumbnail

Github ์†Œ์Šค์ฝ”๋“œ

Service Discovery ?

  • ๋ณดํ†ต์˜ ๊ฒฝ์šฐ ํ•œ ์„œ๋น„์Šค์—์„œ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ IP์™€ Port์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” IP์™€ Port์ •๋ณด๊ฐ€ Auto-scaling ๋“ฑ์œผ๋กœ ์ธํ•ด ๋™์ ์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.
  • Service Discovery๋Š” ์„œ๋น„์Šค์˜ ์œ„์น˜์™€ ๊ฐ€์šฉ ์ƒํƒœ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์„œ๋น„์Šค๊ฐ€ ์š”์ฒญํ•  ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ ๊ฐ€๋Šฅํ† ๋ก ํ•œ๋‹ค.

Service Discovery์˜ ์ข…๋ฅ˜

  • Client Side Discovery
    • ์ƒ์„ฑ๋œ ์„œ๋น„์Šค๋Š” Service Registry์— ์„œ๋น„์Šค๋ฅผ ๋“ฑ๋ก๋˜๊ณ , ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ํด๋ผ์ด์–ธํŠธ๋Š” Service Registry์—์„œ ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • Server Side Discovery
    • ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ํด๋ผ์ด์–ธํŠธ์™€ Service Registry ์‚ฌ์ด์— Load Balancer๋ฅผ ๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋Š” Load Balancer์— ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  Load Balancer๊ฐ€ Service Registry์— ํ˜ธ์ถœํ•  ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์งˆ์˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

Eureka Server

  • ์‹ค์Šตํ™˜๊ฒฝ
    • Spring boot 2.4.x
    • Spring cloud 2020.0.0
    • Dependency
      • Eureka Server
  • Springboot mainํด๋ž˜์Šค์— @EnableEurekaServer ์„ค์ •
  • .yml or .properties ์„ค์ •
  • ์œ„ ์„ค์ •์„ ๋งˆ์น˜๊ณ  Springboot main๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ•ด๋‹น ํฌํŠธ๋กœ ์ด๋™ํ•˜๋ฉด Eureka Dashboard๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Test Service ์ž‘์„ฑ

  • ์‹ค์Šตํ™˜๊ฒฝ
    • Spring boot 2.5.0
    • Spring cloud 2020.0.3
    • Eureka Discovery Client
    • Spring web
  • .yml or .properties ์„ค์ •
  • Test Service ์‹คํ–‰ ํ›„ Eureka Server์— ๋“ฑ๋ก๋œ ๊ฒƒ์„ ํ™•์ธ

๋‹ค์–‘ํ•œ ์„œ๋ฒ„ ๊ตฌ๋™ ๋ฐฉ๋ฒ•์„ ํ†ตํ•œ ์—ฌ๋Ÿฌ ๊ฐœ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค ๋“ฑ๋ก

๋ฐฉ๋ฒ• 1 - IDE์‚ฌ์šฉ (intellij Ultimate)

  • Run/Debug Configurations
  • ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •
  • ๊ฐ๊ฐ ์‹คํ–‰
  • Eureka Server์— 2๊ฐœ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋“ฑ๋ก๋œ ๊ฒƒ์„ ํ™•์ธ

๋ฐฉ๋ฒ• 2 - Maven๋ช…๋ น์–ด ์‚ฌ์šฉ

  • mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8082'

๋ฐฉ๋ฒ• 3 - ์ปดํŒŒ์ผ ํ›„ jarํŒŒ์ผ ์‹คํ–‰

  • mvn clean compile package
    • ํ”„๋กœ์ ํŠธ ํด๋”์— targetํด๋”๊ฐ€ ์ƒ์„ฑ
  • targetํด๋”์˜ jarํŒŒ์ผ ์‹คํ–‰
    • java -jar -Dserver.port=8082 ./target/project_name.jar

Random Port

  • ์—ฌ๋Ÿฌ ๋ฐฉ์‹์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ์‹คํ–‰๋งˆ๋‹ค ํฌํŠธ๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค.
  • spring์ด ์ œ๊ณตํ•ด์ฃผ๋Š” random port๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด๋ณด์ž.
  • .yml or .properties ์„ค์ •
    • ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ๋‘ ๊ฐœ ์ธ์Šคํ„ด์Šค ๋“ฑ๋ก
    • ์ฒซ ๋ฒˆ์งธ ์„œ๋น„์Šค๋Š” IDE์—์„œ ์‹คํ–‰
    • ๋‘ ๋ฒˆ์งธ ์„œ๋น„์Šค๋Š” mvn๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰
      • mvn spring-boot:run
      • ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋”ฐ๋กœ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ๋“ฑ๋ก๋œ ์ธ์Šคํ„ด์Šค ํ™•์ธ
    • ๋“ฑ๋ก๋œ ์ธ์Šคํ„ด์Šค์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ์™ผ์ชฝ ํ•˜๋‹จ์— ๋žœ๋คํ™”๋œ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.
profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง

0๊ฐœ์˜ ๋Œ“๊ธ€