Spring Cloud Eureka: 서비스 디스커버리 실습(간단)
MSAEurekaTIL
서비스 디스커버리
독립된 서비스 간의 각 서비스 위치를 동적으로 관리하고 찾아주는 기능이다
서비스는 Eureka 서버에 등록되고 다른 서비스는 Eureka 서버를 통해 등록된 서비스를 조회하여 통신한다
Eureka란?
넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리
모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장
여러 인스턴스를 지원하여 고가용성을 유지할 수 있음
Eureka 서버를 구성 및 각 클라이언트 등록
Eureka 서버의 역할
클라이언트(서비스)들이 자신의 정보를 등록하고, 다른 서비스의 정보를 조회할 수 있는 "중앙 저장소" 역할
프로젝트 생성 시 Eureka 서버 Dependencies 필요
Eureka 서버 설정
server.port=19090
# 다른 Eureka 서버에 이 서버를 등록하지 않음
eureka.client.register-with-eureka=false
# 다른 Eureka 서버의 레지스트리를 가져오지 않음
eureka.client.fetch-registry=false
eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
@SpringBootApplication
@EnableEurekaServer // Eureka 서버로 동작하게 됨
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
Eureka 클라이언트의 역할
자신을 Eureka 서버에 등록하고, 필요 시 다른 서비스를 조회할 수 있는 역할.
프로젝트 생성 시 Eureka 클라이언트 Dependencies 필요
Eureka 클라이언트 설정
# 클라이언트 A
server.port=19091
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
# 클라이언트 B
server.port=19092
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
클라이언트는 Eureka 서버(
localhost:19090
)와 통신하여 자신을 등록하고, 필요 시 등록된 다른 서비스의 정보를 조회한다
Eureka 서버를 실행 후 브라우저에서 http://localhost:19090/eureka에 접속하면 Eureka 대시보드를 확인할 수 있다
각 클라이언트를 실행한 뒤 Eureka 서버 대시보드에서 등록된 서비스 목록을 확인할 수 있다
서비스 이름, 인스턴스 ID, 상태 등이 표시
Spring Cloud Eureka를 통해 간단한 설정만으로 서비스 등록/조회가 가능한 환경을 구축할 수있다