yeo72.devlog

[Spring Cloud] Eureka server 와 Eureka Client 설정 - application yml 본문

Study/Java

[Spring Cloud] Eureka server 와 Eureka Client 설정 - application yml

짱이08 2023. 3. 14. 19:08

해당 포스팅은 Sprign Cloud로 개발하는 마이크로서비스 애플리케이션의 강의를 듣고 요약 정리한 것입니다.

 

application.yml 설정

spring cloud 에서 discovery를 구성

Eureka Server 와 Eureka Client 두가지로 나누고

아래 설정은 Eureka 클라이언트와 Eureka 서버의 상호작용 방식을 지정한다.

 

Eureka Server

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
  • fetch-registry
    Eureka 서버에 등록된 인스턴스의 목록을 가져와 로컬 캐시에 저장할지 말지 여부를 결정한다
  • register-with-eureka
    Eureka 서버에 등록할 지 여부를 결정한다

 

Eureka Server로 사용하는 서비스의 경우 해당 설정이 필요 없기 때문에 false로 처리한다

반면 Eureka client인 user-service는 서버에 등록 및 저장이 필요하므로 true 로 처리한다.
아래의 코드를 확인하자

 

Eureka Client

server:
  port: 0

spring:
  application:
    name: user-service
eureka:
  instance:
    instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
  client:
    fetch-registry: true
    register-with-eureka: true
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka
  • service-url
    Eureka server의 port 번호를 써준다
  • server.port : 0
    위 같이 지정하면 랜덤 포트를 사용하는 것을 의미한다

 

그리고 여러가지 방식으로 포트만 변경해서 하나의 해당 클라이언트 서비스를 eureka 서버에 등록되었는지 확인 할 수 있다.

이때 서버의 포트를 0(랜덤) 으로 두고 서버를 여러개 띄우면 Eureka server의 대시보드에는 하나의 인스턴스 밖에 있지 않는다
랜덤포트를 사용하여 서버를 띄웠는데도 yml에 설정된 server.port :0 으로 대시보드에 나타난다.

이렇게 하나의 인스턴스가 아닌 여러개의 인스턴스를 대시보드에 나타내기 위해서는 각 인스턴스 마다의 이름을 지정해 주면된다

 

  • eureka.instance.instance-id
    위와 같이 설정을 하면 각 인스턴스의 이름이 지정 된다.
    하나씩 살펴보자면
    ${spring.cloud.client.hostname} 은 현재 인스턴스 호스트의 이름
    ${spring.application.instance_id:${random.value}} 은 instance-id가 설정되어있으면 해당 값을 사용하고 설정되어있지 않으면
    ${random.value}} 를 사용하여 무작위로 값을 지정한다

'Study > Java' 카테고리의 다른 글

[JAVA] 상속과 포함관계  (0) 2023.09.12
[JAVA]JVM 동작원리  (0) 2023.09.10
[Java]Scanner 와 BufferedReader의 차이  (0) 2023.03.15
[Java] valueOf() 함수와 toString() 함수의 차이  (0) 2022.04.19
[Java] String.toCharArray()  (0) 2022.04.19