본문 바로가기
해피 코딩/Spring

[MSA] 서비스 디스커버리 Eureka

by happy-coding 2024. 8. 4.
🔥 서비스 디스커버리 Eureka에 대하여 공부하고, Eureka 설정 및 실행하여 동작 확인하기

[ 서비스 디스커버리 ]

  • 서비스 디스커버리는 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능을 한다.
  • 각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신한다.
  • 주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등이 있다.

[ Eureka ]

  • 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리한다.
  • 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 한다.
  • 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장한다. (헬스 체크)
  • 여러 인스턴스를 지원하여 고가용성을 유지한다.

[ Eureka 서버 설정 ]

  • Eureka 서버는 서비스 레지스트리를 구성하는 중앙 서버이다.
Eureka 서버에 @EnableEurekaServer 추가
@SpringBootApplication
@EnableEurekaServer // 현재의 서버(애플리케이션)가 유레카 서버로써 동작한다
public class ServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(ServerApplication.class, args);
	}

}
application.properties
spring.application.name=server

server.port=19090

# 유레카 서버에 자신을 등록할지 여부를 설정합니다.
eureka.client.register-with-eureka=false

# 유레카 서버로부터 레지스트리를 가져올지 여부를 설정합니다.
eureka.client.fetch-registry=false

# 유레카 서버 인스턴스의 호스트 이름을 설정합니다.
eureka.instance.hostname=localhost

# 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL을 설정합니다.
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
application.yml
server:
  port: 19090

eureka:
  client:
    register-with-eureka: false  # 다른 Eureka 서버에 이 서버를 등록하지 않음
    fetch-registry: false  # 다른 Eureka 서버의 레지스트리를 가져오지 않음
  server:
    enable-self-preservation: false  # 자기 보호 모드 비활성화
Dependencies


[ Eureka 서버에 클라이언트 인스턴스 등록 ]

중앙 저장소 역할을 하는 Eureka 서버에 클라이언트 인스턴스 등록하기 

Eureka 서버에 클라이언트 인스턴스 등록


[ Eureka 클라이언트 설정 ]

  • 각 서비스 애플리케이션은 Eureka 서버에 자신의 위치를 등록한다.
  •  'spring-cloud-starer-netflex-eureka-client' 의존성을 사용하고, 애플리케이션 이름만 설정파일에 있으면 Eureka에 등록된다.
application.yml
spring:
  application:
    name: product-service
server:
  port: 19093
eureka:
  client:
    service-url:
      # 유레카 서버의 주소 설정
      defaultZone: http://localhost:19090/eureka/

 

Dependencies


[ Run ]

  • 하나의 Eureka 서버에 Oreder, Product 클라이언트 인스턴스 연결 확인하기.
세 개의 서비스를 모두 실행 한다.

Eureka 서버 19090포트 접속
  • Oreder, Product 클라이언트 인스턴스가 연결되어 있는것을 볼 수 있다.


    서비스 디스커버리 Eureka를 통하여, 하나의 중앙 서버에 두 개의 클라이언트 인스턴스 서비스를 등록하여 연결되는 것을 확인하였다.
    읽어주셔서 감사합니다 😊