-
Spring cloud gateway - 5. Eureka를 통해 서버 연결하기Spring Cloud/Spring Cloud GateWay 2023. 12. 14. 14:23728x90
이 글을 쓰기 위해 중간에 Spring cloud eureka 글을 썼다.
이전 글까지는 gateway에서 client의 주소를 직접가지고 있어서, EKS라던지 서버가 새로 구성 될 때마다 주소가 변경되면 gateway application.yml에 적힌 각 서비스의 주소도 변경을 했어야 하는데, 이젠 주소를 Eureka Server가 registry에 등록하고 있고, Client가 그것을 참조하니 gateway도 각 서버의 application name만 알고 있으면 된다 (EKS 같은 K8S환경에서는 Eureka를 사용해도 되지만, service.yml에 등록된 이름으로도 서로 통신이 가능하여 eureka를 안써도 된다)
gateway를 제외한 나머지 서비스들은 Spring cloud eureka에서 작성한 서비스와 같이 사용하였습니다
코드
build.gradle.kt - gateway도 Eureka Client로 Eureka Server에 등록되어야 다른 Client의 정보도 가져올 수 있다.
GatewayApplication - Eureka Client를 사용하기 위해 EnableDiscoveryClient 어노테이션을 붙였다.
application.yml - Eureka console에서 보여질 이름을 위해 application.name을 gateway로 적었다.
- 기존에 사용하던 users 서비스 대신 eureka를 공부하면서 만든 eureka client 서비스쪽으로 요청하려고 한다.
- 식별아이디도 users_route 대신 eureka_client_route로 변경하였다.
- uri를 이제 직접적인 주소가 아닌 앞에 lb:// 를 붙여 LoadBalance를 사용한다고 명시한다. lb뒤에는 eureka server에 등록되고 eureka console에 보여지는 application name을 적으면 된다.
eureka console - 조건문도 기존 users에서 client로 변경하였고, 여기에 맞춰 필터도 users 대신 client를 삭제하도록 하였다.
eureka client1, eureka clinet2 controller - eureka client로 직접 요청을 보내보기위해 간단한 Controller를 만들었다.
코드 실행
eureka conosole - eureka console에 client 2개와 gateway 1개가 등록되었다.
eureka client1, eureka client2 page - 모두 직접 호출 했을 때 문제 없이 작동한다.
gateway page - gateway 주소로 호출해보면 처음은 1 다음인 2 이런식으로 양쪽이 번갈아가며 호출 되는 것을 확인할 수 있다.
이제 MSA환경에서 여러 서비스를 이중, 삼중 다중화를 해도, 클라이언트는 게이트웨이 주소 하나만 알고있으면 게이트 웨이가 path에 맞춰 알맞은 서버로 요청을 보낸다.
이 게이트웨이가 요청을 보낼 때에도 각 서버의 주소를 직업알고 있는것이 아니라, Eureka Server에 등록된 Client의 application name만 알고 있으면, Eureka Server의 registry를 통해 주소를 알 수 있어, 프론트 백엔드 개발자 모두 서버의 주소를 직접 관리할 필요가 없어진다.
728x90반응형LIST'Spring Cloud > Spring Cloud GateWay' 카테고리의 다른 글
Spring cloud gateway - 4. filter를 통해 Path 수정하기 (0) 2023.12.13 Spring cloud gateway - 3. 경로를 이용하여 Route하기 (0) 2023.12.13 Spring cloud gateway - 2. Spring cloud gateway 프로젝트 만들기 (0) 2023.12.11 Spring Cloud Gateway - 1. Spring Cloud Gateway란 (0) 2023.12.11