- 개요
Eureka는 Netflix가 개발한 서비스 발견 프레임워크로, REST 기반의 서비스를 제공합니다. 이 시스템은 두 가지 주요 컴포넌트로 구성됩니다: Eureka 서버와 Eureka 클라이언트.
- 구현 예시
IDEA의 Spring Initializr를 활용해 마이크로서비스 프로젝트를 생성합니다. 다음 의존성을 추가해야 합니다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
서버 시작 클래스에 @EnableEurekaServer 애너테이션을 적용하여 Eureka 기능을 활성화합니다.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class ServiceDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceDiscoveryApplication.class, args);
}
}
필수적인 설정값으로 애플리케이션 이름과 포트를 정의합니다.
spring:
application:
name: service-discovery
server:
port: 8848
Eureka 서버의 기본 설정입니다. 실제 운영 환경에서는 다중 서버를 구성해 가용성을 확보해야 합니다.
eureka:
client:
service-url:
defaultZone: http://localhost:8848/eureka/
register-with-eureka: false
service-url매핑에서defaultZone을 지정합니다. 해당 값은 소스코드 내부에서 규칙을 정의하고 있습니다.
private Map<String, String> serviceUrl = new HashMap<>();
this.serviceUrl.put("defaultZone", "http://localhost:8848/eureka/");
register-with-eureka는 기본적으로 true로 설정되며, false로 변경하면 해당 서버가 자기 자신을 등록하지 않습니다.
- 보호 모드 설정
개발 환경에서는 다음과 같이 자동 보호 기능을 비활성화할 수 있습니다.
eureka:
client:
service-url:
defaultZone: http://localhost:8848/eureka/
register-with-eureka: false
server:
enable-self-preservation: false
- 운영 환경 고가용성 구성
IDEA에서 실행 파라미터를 수정합니다. 서버1의 설정은 다음과 같습니다:
-Dserver.port=8848 -Deureka.client.service-url.defaultZone=http://localhost:8849/eureka/,http://localhost:8850/eureka/
다음과 같은 방식으로 세 서버를 구성하고, 클라이언트 또한 모든 서버 주소를 등록해야 합니다. 각 서버와 클라이언트를 별도로 실행하면 됩니다.