1. Eureka Client 소개
- 마이크로서비스 아키텍처에서 서비스 디스커버리는 핵심 요소입니다.
- Eureka는 Netflix에서 개발한 서비스 디스커버리 서버로, Spring Cloud Netflix 프로젝트의 일부입니다.
- Eureka는 Client와 Server로 구성되며, Eureka Client는 서비스를 등록하고 Eureka Server로부터 등록된 서비스 정보를 조회합니다.
2. 기본 설정
- Eureka Client를 사용하려면 의존성을 추가하고 서비스를 등록해야 합니다.
2.1 의존성 추가
Maven 설정
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
Jersey 제외하기
기본적으로 Eureka Client는 HTTP 통신에 Jersey를 사용합니다. Jersey 의존성을 제외하고 Spring RestTemplate을 사용하려면:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<exclusions>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client4</artifactId>
</exclusion>
</exclusions>
</dependency>
2.2 서비스 등록
기본 애플리케이션 설정
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello world";
}
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.web(true)
.run(args);
}
}
application.yml 설정
spring:
application:
name: my-service # 서비스 ID로 사용됨
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/ # Eureka 서버 URL
eureka.client.serviceUrl.defaultZone
: Eureka 서버 URL의 기본값을 설정합니다.spring.application.name
: 서비스 ID이자 호스트명으로 사용
3. 서비스 보안 설정
3.1 Basic 인증 설정
Eureka 서버에 Basic 인증이 설정된 경우, URL에 인증정보를 포함할 수 있습니다:
eureka:
client:
serviceUrl:
defaultZone: http://user:password@localhost:8761/eureka/
제한사항
Eureka의 제한으로 서버별로 다른 인증정보를 설정할 수 없으며, 첫 번째 설정만 사용됩니다.
3.2 HTTPS 설정
HTTPS를 사용하려면 다음 설정이 필요합니다:
eureka:
instance:
securePortEnabled: true
nonSecurePortEnabled: false
statusPageUrl: https://${eureka.hostname}/info
healthCheckUrl: https://${eureka.hostname}/health
homePageUrl: https://${eureka.hostname}/