본문 바로가기
개발/Spring Cloud

[Spring Cloud] Eureka Client 구축하기

by baau 2023. 6. 5.

이전 포스팅에서 Eureka Server를 구축했으니, 서비스 디스커버리에 등록할 클라이언트를 구현하는 방법을 정리하고자 한다.

 

Eureka Client 구축

Gradle 의존성 추가

implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

 

Euraka Client 활성화 (XXXApplication.java)

@SpringBootApplication
@EnableDiscoveryClient
public class XXXApplication {

    public static void main(String[] args) {
        SpringApplication.run(XXXApplication.class, args);
    }

}
  • 해당 서버가 Eureka Client 역할을 할 수 있도록 @EnableDiscoveryClient 추가

 

Euraka Server 설정 파일 (application.yml)

server:
  port: 0

spring:
  application:
    name: user-service

eureka:
  instance:
    instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka
  • server.port : 0 (Random Port)
    • 애플리케이션의 서버 포트를 설정하는 속성
    • '0'으로 설정하면 임의의 Port 번호로 할당되어, 애플리케이션을 실행할 때마다 Port를 지정하지 않아도 자동으로 사용가능한 임의의 포트로 설정된다.
    • 애플리케이션 실행시, 랜던 포트를 확인할 수 있다.

  • spring.application.name
    • MSA에서 해당 서비스를 구별할 수 있는 고유한 ID
  • eureka.client
    • register-with-eureka : 현재 애플리케이션을 Eureka Server에 등록하지에 대한 여부 (true)
    • fetch-registry : Eureka Server로 부터 인스턴스들의 정보를 주기적으로 가져올 것인지에 대한 속성 (true)
    • service-url.defaultZone : Eureka Client가 Eureka Server에 연결하기 위한 URL 설정, defaultZone은 기본적으로 용되는 Eureka Server의 URL를 나타낸다.
    • instance.instance-id :  애플리케이션의 인스턴스 ID 설정
      • 만약 instance-id를 설정하지 않는 경우
        • Random Port를 사용하여 여러 애플리케이션을 실행시키면, 예시(1)와 같이Eureka Server에 마치 하나의 애플리케이션만 등록된 것 같이 보인다.
        • Eureka Server는 "address:name:port" 로 등록되기 때문에, 동적으로 할당된 Port 번호가 아닌 application.yml에 등록된 0이 등록된다.
      • instance-id를 설정할 경우
        • 예시(2)와 같이, Random Port를 사용하는 2개의 애플리케이션이 Eureka Server에 잘 등록되는 것을 확인할 수 있다.

예시 (1) - instance-id 설정 X
예시 (2) - instance-id 설정 O

 

Euraka  Client 실행

  • Eureka Server를 먼저 실행시킨 후,
  • Eureka Client 애플리케이션을 실행시키면, Eureka Server에 등록되는 것을 확인할 수 있다.

 

MSA 공부

(1) Eureka Server 구성
(2) Eureka Client 구성
(3) Client Side Load Balancer & API Gateway 개념 정리
(4) Spring Cloud Gateway 구현

참고 강의 : https://www.inflearn.com/course/스프링-클라우드-마이크로서비스/dashboard