[Spring Boot] Eureka (Spring Cloud Discovery)

Wonjun Seo·2024년 2월 8일
0

Eureka (Spring Cloud Discovery)

유레카 서버는 각각 분산된 서버를 등록하고 관리해주는 미들웨어이다. 각 서버가 시작될 때 유레카 서버에 등록된다. 각 서버에서 다른 서버로 요청할 때는 유레카 서버에서 그 정보를 받아서 요청한다.

먼저 Eureka는 Eureka Server와 Eureka Client로 구성된다.

Eureka Server는 Eureka Client에 해당하는 마이크로서비스들의 상태 정보가 등록되어 있는 레지스트리를 갖는다.

Eureka Client는 서비스가 시작될 때 Eureka Server에 자신의 정보를 등록한다. 등록된 후에는 30초마다 레지스트리에 핑을 전송하여 자신의 가용 상태를 알리는데 일정 횟수 이상 핑이 확인되지 않으면 Eureka Server에서 해당 서비스를 레지스트리에서 제외시킨다.

레지스트리의 정보는 모든 Eureka Client에 복제되어 있어 필요할 때마다 가용 상태인 모든 서비스들의 목록을 확인할 수 있고, 이 목록은 30초마다 갱신된다. 가용 상태의 서비스 목록을 확인할 경우에는 서비스의 이름을 기준으로 탐색하여 로드밸런싱을 위해 내부적으로 Ribbon(클라이언트 측의 로드밸런서)을 사용한다.


Eureka Server 생성하기

1. Eureka 서버의 build.gradle에 Dependency를 등록한다.

compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')

2. application.properties에 필요한 정보를 추가한다.

server.port=12300

spring.application.name=eureka-server

eureka.client.service-url.defaultZone=http://localhost:12300/eureka/
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

3. Application.java에 @EnableEurekaServer 어노테이션을 추가한다.

@SpringBootApplication
@EnableEurekaServer
public class SpringEurekaApplication {

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

}

이렇게 Eureka Server의 생성이 완료되었다. 방금 생성한 어플리케이션을 동작 시키고 브라우저에서 http://localhost:12300에 접속하면 Eureka Server가 제공하는 Page를 확인할 수 있다.


Eureka Client 등록하기

1. 해당 프로젝트의 build.gradle 파일에 Dependency를 등록한다.

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

2. DependencyManagement를 추가한다.

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

3. application.properties에 필요한 정보를 추가한다.

server.port=8086

eureka.client.service-url.defaultZone=http://localhost:12300/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

4. Application.java에 @EnableDiscoveryClient 어노테이션을 추가한다.

@EnableDiscoveryClient
@SpringBootApplication
public class ApiApplication {

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

}

0개의 댓글