[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정

2025. 3. 19. 17:48· BE/Spring Boot
목차
  1. Eureka란?
  2. 서비스 디스커버리란?
  3. 스프링 부트에서 Eureka 설정
  4. build.gradle 설정
  5. Eureka Client
  6. Eureka Server
  7. 유레카 서버 주소 접속
  8. API Gateway에 유레카 이름으로 등록
728x90

Eureka란?

Spring Cloud Eureka는 넷플릭스에서 개발한 서비스 디스커버리 시스템이다.

마이크로서비스 아키텍처(MSA) 환경에서 동적으로 서비스 등록 및 검색을 가능하게 해준다.

 

서비스 디스커버리란?

마이크로서비스 환경에서는 서비스들이 동적으로 변경될 수 있으므로, 각 서비스의 IP 및 포트를 관리하는 중앙 레지스트리가 필요하다.

 

  • Eureka Server: 서비스들의 정보를 저장하고 관리하는 레지스트리 서버 역할
  • Eureka Client: 유레카 서버에 자신의 정보를 등록하고, 필요할 때 다른 서비스의 정보를 조회

 

유레카 서버에 등록만 잘 해놓으면 다른 서버의 IP를 알 필요가 없다 => 필요할 때 유레카 서버에서 받아가면 된다.

 

서버가 아무리 많아도 각자의 서비스를 개발하는 개발팀에서 유레카 서버에 등록만 잘 해놓으면

등록해놓은 이름을 통해 IP 주소와 포트를 받아오면 된다.

 


스프링 부트에서 Eureka 설정

build.gradle 설정

스프링 클라우드 버전 추가

ext {
set('springCloudVersion', '2024.0.0')
}
dependencyManagement {
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}")
}
}

 


Eureka Client

Eureka Client 라이브러리 추가 

board-api, user-api, gateway 등 클라이언트에 라이브러리 추가

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

 

 

application.yml 설정

클라이언트를 유레카 서버에 등록해주는 설정을 추가해준다.

 

application.yml 설정 파일에 이름을 설정해준다.

이름 설정을 안 해주면 유레카에 UNKNOWN으로 뜬다.

eureka:
instance:
prefer-ip-address: true # 서비스 등록 시 호스트명이 아닌 IP 주소를 사용 (다른 서비스가 접근하기 쉽게 설정)
lease-renewal-interval-in-seconds: 10 # Eureka 클라이언트가 서버에 자신의 상태를 갱신하는 주기 (초 단위)
lease-expiration-duration-in-seconds: 30 # Eureka 서버가 클라이언트의 갱신이 없을 때 인스턴스를 만료 처리하기까지의 시간 (초 단위)
client:
service-url:
defaultZone: http://localhost:8001/eureka/ # Eureka 서버의 주소 (여러 개일 경우 ,로 구분)
register-with-eureka: true # 현재 서비스(User API)를 Eureka 서버에 등록
fetch-registry: true # Eureka 서버에서 다른 서비스 정보를 주기적으로 가져옴 (서비스 디스커버리 활성화)
spring:
application:
name: user-api # Eureka에 등록될 서비스 이름 (서비스 식별용)

 


Eureka Server

Eureka Server 라이브러리 추가

유레카 서버로 사용할 모듈 하나를 만들어준다. (discovery)

모듈의 build.gradle에 유레카 서버 라이브러리를 추가해준다.

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

 

 

application.yml 설정

server:
port: 8001 # Eureka 서버가 실행될 포트
spring:
application:
name: service-discovery # Eureka 서버의 애플리케이션 이름
eureka:
server:
eviction-interval-timer-in-ms: 60000 # 서비스 헬스 체크 주기 (기본값: 60초)
renewal-percent-threshold: 0.85 # 최소 허용 갱신 비율 (기본값: 0.85, 85%)
instance:
hostname: localhost # Eureka 서버의 호스트명 (기본값: 현재 서버의 호스트명)
client:
register-with-eureka: false # Eureka 서버가 자체적으로 Eureka에 등록하지 않도록 설정 (Eureka 클러스터가 아니라 단독 서버일 경우 false)
fetch-registry: false # Eureka 서버가 자체적으로 다른 서비스 정보를 가져오지 않도록 설정 (Eureka 클러스터가 아니라면 false)

 

 

@EnableEurekaServer 어노테이션 추가

해당 모듈이 Eureka Server로 동작하도록 설정하는 어노테이션을 추가해준다.

어노테이션이 없으면 Eureka Server 기능이 활성화되지 않음! 

@EnableEurekaServer
@SpringBootApplication
public class ServiceDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceDiscoveryApplication.class, args);
}
}

 

 


유레카 서버 주소 접속

위에서 서버 설정한대로 8001 포트로 접속해준다.

 

 

 


API Gateway에 유레카 이름으로 등록

gateway 모듈의 application.yml에서 주소를 유레카에서 등록해준 애플리케이션 이름으로 지정해준다.

server:
port: 8000
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8001/eureka/
register-with-eureka: true
fetch-registry: true
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
- id: user-api
uri: lb://user-api # Eureka에 등록된 서비스 이름
predicates:
- Path=/user/**
- id: board-api
uri: lb://board-api # Eureka에 등록된 서비스 이름
predicates:
- Path=/board/**

 

 

게이트웨이의 IP 주소로 HTTP 요청을 보내면 응답이 온다.

 

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'BE > Spring Boot' 카테고리의 다른 글

[Spring Boot] CQRS  (0) 2025.03.29
[Spring Boot] Gateway에서 인가 처리 (Filter)  (0) 2025.03.21
[Spring Boot] 멀티 모듈 프로젝트 생성 / API Gateway 연결  (0) 2025.03.18
[Spring Boot] Spring Cloud란? / Spring Cloud Gateway  (0) 2025.03.18
[Spring Boot] STOMP란? / 간단한 채팅방 구현  (0) 2025.03.18
  1. Eureka란?
  2. 서비스 디스커버리란?
  3. 스프링 부트에서 Eureka 설정
  4. build.gradle 설정
  5. Eureka Client
  6. Eureka Server
  7. 유레카 서버 주소 접속
  8. API Gateway에 유레카 이름으로 등록
'BE/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] CQRS
  • [Spring Boot] Gateway에서 인가 처리 (Filter)
  • [Spring Boot] 멀티 모듈 프로젝트 생성 / API Gateway 연결
  • [Spring Boot] Spring Cloud란? / Spring Cloud Gateway
셰욘
셰욘
셰욘
seiyeon
셰욘
전체
오늘
어제
  • 분류 전체보기 (176)
    • 알고리즘 (46)
      • 프로그래머스 (2)
      • 백준 (37)
      • 문제 유형 (7)
    • CS (41)
      • Linux (6)
      • DB (15)
      • 자료구조 (3)
      • OOP (2)
      • 아키텍처 (0)
    • BE (42)
      • Java (9)
      • Spring Boot (32)
    • FE (6)
      • Next.js (1)
      • JavaScript (5)
      • Vue.js (7)
      • Web (0)
    • 배포 (5)
    • 회고 (19)
      • BEYOND SW 캠프 (19)
    • 기타 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그 관리

공지사항

인기 글

태그

  • web
  • 구현
  • 백트래킹
  • dfs
  • be
  • js
  • 프로그래머스
  • bfs
  • cs
  • 알고리즘
  • fe
  • 그리디
  • Gateway
  • 주간회고
  • vue
  • DP
  • 우선순위 큐
  • db
  • 트리
  • Java
  • 네트워크
  • 오블완
  • spring boot
  • 실습
  • 회고
  • 백준
  • AWS
  • 리눅스
  • 티스토리챌린지
  • 자료구조

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.1
셰욘
[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.