🔥스파르타 TIL (MSA)

Eureka 서버 사용해보기

승승장규 2025. 3. 8. 14:21
 

Spring Cloud 란? (1)

마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이며, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다. 주요 기능 ▼서비스 등

seungg8361.tistory.com

MSA에서는 여러 개의 독립적인 서비스들이 존재하며, 이 서비스들이 동적으로 변할 수 있기 때문에, 서로의 위치(IP, 포트 등)를 알기 어렵다.
Eureka 서버는 각 서비스의 정보를 관리하고 제공하여, 서비스 간의 통신을 원활하게 만들어 줄 수 있다.

 

 

만약 마이크로서비스 간 통신이 필요한 상황이 온다면, Eureka 서버에서 해당 서비스의 위치(IP, 포트)를 조회해서 클라이언트가 원하는 요청을 Eureka 서버를 통해 대상 서비스의 위치를 동적으로 가져와서 통신한다.

 

 

Eureka는 기본 헬스 체크 엔드포인트인 /actuator/health 를 통해 일 정 시간마다 서비스가 살아있는지 확인하고, 이 신호를 기반으로 서비스의 가용성을 판단하게 된다.

만약 일정 시간 동안 헬스 체크 신호가 없으면, 해당 서비스를 제거하여 장애 처리해서 다른 서비스의 접근을 차단한다.

 

 

Eureka 서버를 설정하기 위해 의존성을 추가해보자

 

build.gradle

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

 

 

 

application.properties

# 애플리케이션 이름을 server로 지정
spring.application.name=server

server.port={포트번호}

# eureka 서버는 client가 아니므로 false, 만약 true 라면 eureka 서버에 자신을 등록하는 것
eureka.client.register-with-eureka=false

# eureka 서버는 다른 서비스 정보를 가져올 필요가 없으므로 false, eureka 서버에서 서비스 목록을 가져올지 결정
eureka.client.fetch-registry=false

eureka.instance.hostname=localhost

# eureka client가 eureka 서버와 통신할 때 사용
eureka.client.service-url.defaultZone=http://localhost:{포트번호}/eureka/

 

 

이렇게 Eureka 서버의 설정이 끝났다면 서비스로 등록할 애플리케이션을 등록해보자

 

 

또 다른 프로젝트를 생성해서 설정해보자

build.gradle 

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

 

application.properties 

spring.application.name={현재 애플리케이션을 구분할 수 있는 이름}

server.port={현재 애플리케이션을 구분하기 위한 포트번호}

eureka.client.service-url.defaultZone=http://localhost:{eureka서버에서 설정한 포트번호}/eureka/

 

 

모든 설정을 마치고 애플리케이션을 모두 실행시킨 뒤, eureka 서버에 설정한 port로 접속해보면 해당 서비스들이 모두 등록된 것을 볼 수 있다.