Spring Cloud에서 Eureka 서버 구성 및 고가용성 설정

  1. 개요

Eureka는 Netflix가 개발한 서비스 발견 프레임워크로, REST 기반의 서비스를 제공합니다. 이 시스템은 두 가지 주요 컴포넌트로 구성됩니다: Eureka 서버와 Eureka 클라이언트.

  1. 구현 예시

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로 변경하면 해당 서버가 자기 자신을 등록하지 않습니다.
  1. 보호 모드 설정

개발 환경에서는 다음과 같이 자동 보호 기능을 비활성화할 수 있습니다.

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8848/eureka/
    register-with-eureka: false
  server:
    enable-self-preservation: false
  1. 운영 환경 고가용성 구성

IDEA에서 실행 파라미터를 수정합니다. 서버1의 설정은 다음과 같습니다:

-Dserver.port=8848 -Deureka.client.service-url.defaultZone=http://localhost:8849/eureka/,http://localhost:8850/eureka/

다음과 같은 방식으로 세 서버를 구성하고, 클라이언트 또한 모든 서버 주소를 등록해야 합니다. 각 서버와 클라이언트를 별도로 실행하면 됩니다.

태그: Spring Cloud Eureka Server Service Discovery high availability

6월 4일 00:14에 게시됨