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}} 를 사용하여 무작위로 값을 지정한다