Sun's Blog
Spring Cloud Eureka 본문
Server
의존성
<properties>
<java.version>11</java.version>
<spring-cloud.version>2021.0.8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- spring boot starter 등록
- Eureka를 사용하기 위한 spring-cloud-discovery에서 eureka-server를 등록
@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EcoomerceApplication {
public static void main(String[] args) {
SpringApplication.run(EcoomerceApplication.class, args);
}
}
- @EnableEurekaServer는 이 프로젝트를 유레카 서버로써 등록시킨다는 어노테이션
Application.yml
server:
port: 8761
spring:
application:
name: discoveryservice
eureka:
client:
register-with-eureka: false
fetch-registry: false
- Eureka 서버의 기본 포트는 8761
- spring.application.name: 각 마이크로서비스의 id로써의 이름
- register-with-eureka: 자신의 정보를 유레카에 등록하지 않는다는 뜻, 유레카 서버가 유레카서버에 등록 될 필요는 없다.(기본값은 true)
- fetch-registery: 주기적으로 유레카 서버로부터 인스턴스들의 정보를 주기적으로 가져올 것인지를 설정하는 정보(true)
Client
의존성
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 서버와 다른 점은 이번에는 Eureka Server 말고 Eureka Client를 등록해준다.
@EnableDiscoverClient
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
- @EnableDiscoveryClient 혹은 @EnableEurekaClient를 등록해준다.
- 아마 Discovery 쪽이 더 넓게 사용할 수 있는 걸로 알고있다.
Application.yml
server:
port: 9001
spring:
application:
name: user-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
- eureka.client.service-url.defaultZone: 유레카 서버의 url
실행 시 http://localhost:8761에 접속하면 user-service가 등록됨을 확인 할 수 있다.(당연하지만 유레카 서버 또한 실행상태여야 한다.)
포트 번호 정하기
- 만약 클라이언트를 여러 개 실행해야하는 상황에서 포트 번호를 매번 정하기 귀찮다면 server.port=0 으로 하면 랜덤 포트를 사용할 수 있다.(SpringBoot에서 지원)
그런데 이렇게 클라이언트를 여러 개 실행하고 나서 유레카 서버를 확인해보니 등록되어 있는 클라이언트가 1개로만 보인다. 이유는 처음 properties 혹은 yml 파일에 정해진 포트 0번으로 등록되고 동적으로 등록된 포트는 무시되기 때문에 다 같은 도메인으로 보기 때문이다. 이럴때는 아래와 같이 client에 추가로 설정해 준다.
server:
port: 0
spring:
application:
name: user-service
eureka:
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.name:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
- 기존의 유레카 서버에 등록되는 id 값을 바꿔주자
'ETC' 카테고리의 다른 글
팝업, 모달 그리고 토스트 메시지 (0) | 2023.08.14 |
---|---|
Spring Cloud Gateway (0) | 2023.08.13 |
Microservice와 Spring Cloud 소개 (0) | 2023.08.12 |
Java - Record (0) | 2023.08.09 |
[10분 테코톡] 베리의 RESTful API (0) | 2023.08.07 |