본문 바로가기

Spring/Spring Cloud

Eureka

반응형

Eureka 란, 

리본은 yml 파일을 통해 서버 목록을 관리하고, 이를 삭제하거나, 추가하기 위해서는 배포 없이 불가능하다.

NetflexEureka 는 이러한 Dynamic Service Discovery 기능을 제공해준다.

Service Registry

  • 서비스 탐색, 등록
  • 클라우드의 전화번호부?
  • (단점) 침투적 방식 코드 변경

Discovery Client

  • spring-cloud에서 서비스 레지스트리 사용 부분을 interface 화
  • Eureka, Consul, Zookeeper, etcd 등의 구현체가 존재

리본은 유레카와 결합하여 사용할 수 있으며 서버 목록을 자동으로 관리.

리본은 유레카가 로컬에 저장해 둔 서버 목록을 가져올 수 있고, 서비스를 실제 호출할 때에는, 유레카에 의해 혹은 리본에 설정한 policy에 따라 라운드 로빈으로 서비스를 호출하게 됨

  1. 서버 시작 시, Eureka Server(Registry)에 자동으로 자신의 상태를 등록 (UP)
    > eureka.client.register-with-eureka: true (default)
  2. 주기적 HeartBeat 으로 Eureka Server 에 자신이 살아 있음을 알림
    > eureka.instance.lease-renewal-interval-in-seconds: 30 (defualt)
  3. 서버 종료 시 Eureka Server 에 자신의 상태 변경 (Down) 혹은 자신의 목록 삭제
  4. Eureka 상에 등록된 이름은 'Spring.application.name'

Display (Eureka Client)

dependency

    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client') // 3. To use Eureka client

application.yml

eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka  # default address

DisplayApplication.java

@EnableEurekaServer 애노테이션만 추가

@SpringBootApplication
@EnableCircuitBreaker
@EnableEurekaClient
public class DisplayApplication {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(DisplayApplication.class);
    }

}

Eureka Server

dependency

    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server') // To use Eureka server

application.yml

server:
  port: 8761  # Default : 8761

spring:
  application:
    name: eureka-server

eureka:
  server:
    response-cache-update-interval-ms: 1000 # Eureka Server's Response Cache. Default 30,000ms
    enableSelfPreservation: false           # Just for demo
  client:
    register-with-eureka: false             # Only for local stand-alone development
    fetch-registry: false                   # Only for local stand-alone development
    service-url:
      defaultZone: http://localhost:8761/eureka  # Default Value. Just for demo
  instance:
    prefer-ip-address: true                 # Use ip address instead of hostname from OS when reporting myself to eureka server

EurekaServerApplication.java

@EnableEurekaServer 애노테이션만 추가해주면 됨

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

접속 url : http://localhost:8761/

참조 > Spring Cloud 기반 MSA로의 전환

반응형

'Spring > Spring Cloud' 카테고리의 다른 글

Zuul - API Gateway  (0) 2021.01.17
Feign  (0) 2021.01.17
Hystrix & Ribbon  (0) 2021.01.17