Spring Cloud - Netflix Eureka

SeungTaek·2021년 9월 26일
0
post-thumbnail

본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.


📒 Spring Cloud Discovery

  • Service Discovery : 외부에서 마이크로서비스를 찾기 위한 서비스
    - 요청 정보에 따라서 필요한 서비스의 위치를 알려주는 서비스
    - 어떤 서버가 어느 위치에 있는지 (Key, Value) 형식으로 저장
  • 대표적으로 Spring Cloud Netflix Eureka가 있다.

  • 서버가 한대인 경우 : 포트를 나눠서 서비스
    • https://localhost:8080 https://localhost:8081 ...
  • 서버가 여러대인 경우 : url을 다르게 나눠서 서비스
    • https://my-server1:8080 https://my-server2:8080 ...

프로세스

  1. 위 서비스들을 Service Discovery에 등록

  2. 서비스를 사용하고 싶은 클라이언트는 API Gateway에 요청

  3. API Gateway는 Service Discovery에 필요한 서비스가 어디에 위치해있는지 확인

  4. Service Discovery는 서버의 위치를 반환시켜 API Gateway는 그 위치에 요청



📒 실습해보기


📌 1. Eureka Server 만들기

  1. 스프링 부트 프로젝트 생성

    • dependence : Eureka Server

  1. 메인 클래스에 @EnableEurekaServer추가
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryserviceApplication.class, args);
    }
}

  1. application.yml 작성
server:
  port: 8761

spring:
  application:
    name: discoveryService

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

📌 2. Service 만들기

  1. user-service 프로젝트 생성

    • dependence : Eureka Discovery Client


  1. 메인 클래스에 @EnableDiscoveryClient추가
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }
}

  1. application.yml 작성
server:
  port: 0 # 스프링 부트에서 제공하는 랜덤 포트 기능

spring:
  application:
    name: user-service

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url: # eureka 서버 위치
      defaultZone: http://127.0.0.1:8761/eureka
  instance:
    instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}



📌 테스트

  1. Eureka server 실행 후 service 실행
    • service를 여러개 띄어보자(포트를 다르게 설정해야 함)
      • 방법1: 인텔리제이에서 일반적인 실행
      • 방법2: 터미널 이용. 프로젝트 위치에서 mvn spring-boot:run 또는 ./gradlew bootRun

  1. http://localhost:8761/ 에 접속
    • service가 등록되어있는걸 확인할 수 있다.



📒 CF. 포트 번호 지정해서 실행

  • 방법1: 인텔리제이 -> 구성 편집 - > VM options를 -Dserver.port=9092로 변경

  • 방법2: 터미널(프로젝트 위치)에서 mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9092'

  • 방법3: 터미널(프로젝트 위치)에서 mvn clean compile packagejava -jar -Dserver.port=9092 ./taget/user-service-0.0.1-SNAPSHOT.jar 실행


인프런의 'Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)(Dowon Lee)'을 스스로 정리한 글입니다.
자세한 내용은 해당 강의를 참고해주세요.

profile
I Think So!

0개의 댓글