๐ ๋ฌธ์ ์ํฉ
Spring Cloud ๊ธฐ๋ฐ์ MSA ํ๋ก์ ํธ์์ Spring Cloud Gateway๋ฅผ ์ด์ฉํด ์ธ์ฆ ๋ง์ดํฌ๋ก์๋น์ค(auth-service)๋ก ๋ผ์ฐํ ์ ๊ตฌ์ฑํ๋ ์ค, ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
java.lang.IllegalStateException: Invalid host: lb://auth_service
์ฒ์์๋ Eureka์ ์๋น์ค๊ฐ ์ ๋๋ก ๋ฑ๋ก๋์ง ์์๊ฑฐ๋, Gateway์์ fetch-registry ์ค์ ์ด ์๋ชป๋๋ค๊ณ ์๊ฐํ์ง๋ง, ๋ก๊ทธ๋ฅผ ์๋ฌด๋ฆฌ ์ดํด๋ด๋ ๋ชจ๋ ์ค์ ์ ์ ์์ ์ผ๋ก ๋ณด์๋ค.
โ๏ธ ๊ด๋ จ ์ค์
โ Gateway application.yml ์์
spring:
application:
name: gateway-service
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: auth-service
uri: lb://auth_service
predicates:
- Path=/auth/**
โ ์์ธ ๋ถ์
์๋ฌ ๋ฉ์์ง์ ํต์ฌ์ ๋ฐ๋ก ์ด ๋ถ๋ถ์ด๋ค:
Invalid host: lb://auth_service
Spring Cloud Gateway๋ uri: lb://์๋น์ค์ด๋ฆ ํ์์ผ๋ก Eureka์ ๋ฑ๋ก๋ ์๋น์ค์ ํต์ ํ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ฌ์ค์:
๐น lb:// ๋ค์ ์ค๋ ์๋น์ค๋ช ์ Eureka์ ๋ฑ๋ก๋ spring.application.name๊ณผ ์ ํํ ์ผ์นํด์ผ ํ๋ฉฐ,
๐น ํ์ดํ(-)์ ํ์ฉ๋์ง๋ง, ์ธ๋๋ฐ(_)๋ ๋นํ์ค์ด๋ฉฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค.
๐ Eureka ๋ช ๋ช ๊ท์น (RFC ์ฐธ๊ณ )
- ํธ์คํธ ์ด๋ฆ ๊ท์น์ RFC 952, RFC 1123์์ ์ ์๋จ
- ํธ์คํธ ์ด๋ฆ์๋ ํ์ดํ(-)์ ํ์ฉ, ์ธ๋๋ฐ(_)๋ ํ์ฉ๋์ง ์์
- Eureka ๋ฐ Spring Cloud LoadBalancer๋ ์ด ๊ท์น์ ๋ฐ๋ฆ
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
์๋น์ค ์ด๋ฆ์์ ์ธ๋๋ฐ(_)๋ฅผ ํ์ดํ(-)์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค.
๋ณ๊ฒฝ ์
spring:
application:
name: auth_service
# Gateway
uri: lb://auth_service
๋ณ๊ฒฝ ํ
spring:
application:
name: auth-service
# Gateway
uri: lb://auth-service
๐ ๋ถ๊ฐ ์กฐ์น ์ฌํญ
- Eureka ๋์๋ณด๋ (http://localhost:8761)์์ ์ค์ ๋ฑ๋ก๋ ์๋น์ค ์ด๋ฆ์ ํ์ธ
- Gateway ์ปจํ ์ด๋๊ฐ ๋จผ์ ์ฌ๋ผ๊ฐ๊ณ auth-service๊ฐ ๋ฆ๊ฒ ๋ฑ๋ก๋ ๊ฒฝ์ฐ, Gateway ์ฌ์์ ํ์
- ๋ชจ๋ ์๋น์ค๊ฐ ๋์ผํ Docker ๋คํธ์ํฌ (์: msa-net)์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํจ
๐ฌ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์ด ๋ฌธ์ ๋ ๋จ์ํ ๋ค์ด๋ฐ ์ด์์ด์ง๋ง, ์ง์ ๊ฒช์ง ์์ผ๋ฉด ์ฝ๊ฒ ๊ฐ๊ณผํ ์ ์๋ค. ํนํ auth_service์ฒ๋ผ ์ธ๋๋ฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํํ ๋ค์ด๋ฐ ์ต๊ด์ด๋ผ๋ฉด ๋๋์ฑ ๊ทธ๋ ๋ค.
์ด๋ฒ ๊ฒฝํ์ ํตํด:
โ MSA ํ๊ฒฝ์์๋ ์๋น์ค ์ด๋ฆ๋ DNS ํธํ์ฑ์ ๊ณ ๋ คํด ์๋ช ํด์ผ ํ๋ค๋ ๊ตํ์ ์ป์๋ค.