suyeonme

[Spring Cloud] Eureka란? 본문

프로그래밍👩🏻‍💻/Spring

[Spring Cloud] Eureka란?

suyeonme 2023. 1. 24. 21:15

Spring Cloud Eureka란?


Spring Cloud Eureka는 Netflix에서 공개한 OSS Service RegistryEureka ClientEureka 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 Dashboard

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로 추가된다.

Comments