Notice
suyeonme
[Spring Cloud] Eureka란? 본문
Spring Cloud Eureka란?
Spring Cloud Eureka는 Netflix에서 공개한 OSS Service Registry로 Eureka Client와 Eureka Server로 구성된다.
마이크로서비스들의 정보를 Registry에 등록하고 로드밸런싱을 제공하는 미들웨어서버이다.
Eureka는 각각 연결된 서비스의 IP, Port, Instance ID를 가지고 있으며 REST 기반으로 동작한다.
Eureka Server에 등록된 마이크로서비스는 Eureka Client라고 부른다. 따라서 마이크로서비스를 Eureka Server에 등록하면 Eureka Client에 대한 정보를 저장하기 때문에 각각의 마이크로 서비스끼리 통신하는 경우, Eureka에서 받아온 정보로 요청을 보낸다.
Eureka Server
의존성 추가(Gradle)
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server
Eureka Server로 등록
메인 클래스에 @EnableEurekaServer 어노테이션을 추가하여 Eureka Server로 등록한다.
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
설정 추가(application.yml)
server:
port: ${port:8010}
eureka:
client:
registerWithEureka: false # eureka에 등록여부
fetchRegistry: false # registry의 항목을 로컬로 캐시할지 여부
serviceUrl:
defaultZone: http://localhost:8010/eureka
server:
enable-self-preservation: false
waitTimeInMsWhenSyncEmpty: 0
instance:
hostname: localhost
lease-renewal-interval-in-seconds: 5
lease-expiration-duration-in-seconds: 15
설정을 마치고 서버를 구동한 뒤, eureka.client.serviceUrl.defaultZone(http://localhost:8010/eureka)으로 등록한 Url로 접속하면 Eureka Dashboard를 확인할 수 있다. (아래 이미지는 Eureka Client가 등록된 경우이다.)
Eureka Client
의존성 추가(Gradle)
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
Eureka Client로 등록
메인 클래스에 @EnableEurekaClient 어노테이션을 추가하여 Eureka Server로 등록한다.
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
설정 추가(application.yml)
port를 0으로 설정하면, Eureka Client를 등록할 때 port를 자동으로 부여한다.
server:
port: ${PORT:0}
spring:
application:
name: eureka-client-user
main:
allow-bean-definition-overriding: true
eureka:
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone: http://localhost:8010/eureka
instance:
hostname: localhost
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
서버를 구동하면 Eureka Server에 등록되어 Eureka Dashboard에 instance로 추가된다.
'프로그래밍👩🏻💻 > Spring' 카테고리의 다른 글
[Spring Boot] @ControllerAdvice, @ExceptionHandler로 Exception Handling하기 (0) | 2023.01.10 |
---|---|
[Spring] @Valid로 객체의 유효성 검사하기 (0) | 2023.01.09 |
[Spring Boot] 로그(Log) (0) | 2022.11.08 |
[Spring] Bean Scope 종류 (0) | 2022.06.05 |
[Spring] Controller의 요청/응답 관련 애노테이션 (0) | 2022.06.05 |
Comments