반응형
이슈
로컬에서는 localhost:8080, 8081, 8082 등 port 번호를 통해 구분하여 Open Feign 요청을 보내어 개발을 진행했습니다.
하지만, 실제 배포되는 환경에서는 고유 IP 번호를 가지고 있으니, IP 번호가 바뀐다면 일일이 전부 변경해 줘야 되는 것이 너무 번거롭다고 생각이 들었습니다.
그래서 Spring Cloud Eureka Server를 이용해서 각 Spring Cloud Server를 등록하고 필요한 곳에서 application name으로 원하는 서버의 주소를 공유해 Open Feign 인터페이스로 처리하였습니다.
문제
👉 Spring Cloud Eureka Server에 마이크로 서비스를 등록하는 방법은 알고 있지만, 등록된 Spring Cloud Server는 어떻게 찾고 연결하는지 알아야 했습니다.
spring:
application:
name: auth-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: <http://127.0.0.1:8761/eureka>
Eureka Client Server인 경우 위와 같이 Eureka Server에 등록해주어야 합니다.
Eureka Server에 등록되는 이름은 spring.application.name 부분으로 애플리케이션 이름이 대문자로 등록됩니다.
- eureka
- client.register-with-eureka: true를 통해 등록을 허용합니다.
- client.fetch-registry: true를 통해 Eureka 서버로부터 다른 서비스들의 레지스트리를 가져오도록 허용합니다.
- client.service-url에는 eureka server의 주소와 엔드포인트를 설정해 줍니다.
해결
👉 Open Feign 인터페이스 작성 시 @FeignClient에 통신할 애플리케이션 name 지정합니다.
Before Open Feign
@FeignClient(name = "auth-service",
url = "${application.config.auths-url}",
configuration = {FeignConfig.class})
- Eureka Server를 사용하기 전인 코드입니다. application.yml에 통신할 서버의 주소를 지정하여 불러오는 방식입니다.
After Open Feign
@FeignClient(name = "AUTH-SERVICE", configuration = {FeignConfig.class})
- Eureka Server에 등록된 애플리케이션을 http://{IP}:8761/eureka에 접속하여 확인합니다.
- application.yml에서 Eureka 서버에 등록한 application.name의 대문자 값입니다.
- name = “AUTH-SERVICE” 를 지정하면 해당 애플리케이션에 Rest API를 요청할 수 있습니다.
Open Feign 요청 성공 결과
반응형