유레카 클라이언트 설정
2024. 12. 11. 13:53ㆍSpring Microservice
Eureka 설정 상세 설명
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ # Eureka 서버 주소
instance:
hostname: my-service
prefer-ip-address: true
스프링 부트 애플리케이션에서 Netflix Eureka를 사용해 서비스 디스커버리를 구성할 때 사용하는 application.yml
설정입니다. 각 항목이 어떤 역할을 하는지 아래에서 자세히 설명하겠습니다.
1. eureka
이 설정은 Eureka 관련 설정을 그룹화하는 최상위 키입니다. eureka
하위에 클라이언트와 인스턴스 관련 설정을 정의합니다.
2. eureka.client
eureka.client
는 애플리케이션이 Eureka 클라이언트로 작동할 때 필요한 설정을 정의합니다. 클라이언트는 Eureka 서버와 통신하여 서비스를 등록하거나 다른 서비스 정보를 검색합니다.
2.1 service-url
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
- 의미: 클라이언트가 Eureka 서버와 통신하기 위한 URL을 설정합니다.
defaultZone
:- 기본 Eureka 서버의 위치를 나타냅니다.
- 클라이언트는 이 주소를 사용해 Eureka 서버와 통신하고, 서비스 등록 및 검색 작업을 수행합니다.
http://localhost:8761/eureka/
는 로컬에서 실행되는 Eureka 서버를 가리킵니다. 이 URL은 실제 서버 위치(IP 또는 DNS 이름)로 변경할 수 있습니다.
다중 Eureka 서버
Eureka는 고가용성을 위해 여러 Eureka 서버를 클러스터로 구성할 수 있습니다. 이 경우 여러 서버 URL을 쉼표(,
)로 구분해 설정합니다.
eureka:
client:
service-url:
defaultZone: http://eureka1:8761/eureka/,http://eureka2:8761/eureka/
3. eureka.instance
eureka.instance
는 현재 애플리케이션 인스턴스(서비스 제공자)의 설정을 정의합니다. 이 설정은 Eureka 서버에 등록될 서비스의 메타데이터를 제어합니다.
3.1 hostname
eureka:
instance:
hostname: my-service
- 의미: 현재 애플리케이션 인스턴스의 호스트 이름을 설정합니다.
- 기본값: 로컬 머신의 호스트 이름이 사용됩니다.
- 사용 목적:
- 다른 서비스가 이 서비스를 조회할 때 식별할 수 있는 이름으로 사용됩니다.
- 서비스가 여러 인스턴스를 가지는 경우, 인스턴스 간의 구분을 위한 정보로 활용됩니다.
- 예를 들어,
hostname: my-service
로 설정하면 Eureka 서버에 등록될 때 서비스의 기본 식별자가my-service
로 표시됩니다.
3.2 prefer-ip-address
eureka:
instance:
prefer-ip-address: true
- 의미: 서비스 등록 시 IP 주소를 기본 식별자로 사용할지 여부를 결정합니다.
- 기본값:
false
(호스트 이름을 기본 식별자로 사용). true
로 설정 시:- IP 주소를 사용하여 서비스가 등록됩니다.
- 클라이언트가 서비스를 호출할 때, 호스트 이름 대신 IP 주소를 반환받습니다.
- 주로 클라우드 환경이나 컨테이너 환경(Docker, Kubernetes)에서 많이 사용됩니다.
- 동적으로 생성된 컨테이너는 고정된 호스트 이름보다 IP 주소를 사용하는 것이 더 안정적입니다.
Eureka 설정 흐름
클라이언트와 서버 간 통신:
- 클라이언트는
service-url.defaultZone
에 설정된 주소로 Eureka 서버에 HTTP 요청을 보냅니다. - 이 요청은 서비스 등록 또는 다른 서비스 조회에 사용됩니다.
- 클라이언트는
서비스 등록 시 정보:
- 클라이언트는
hostname
과prefer-ip-address
에 따라 Eureka 서버에 자신을 등록합니다. prefer-ip-address: true
라면, 등록 정보에는 IP 주소가 포함됩니다.- 추가로 메타데이터(예: 포트 번호, 서비스 이름 등)도 함께 전송됩니다.
- 클라이언트는
서비스 검색 시 정보:
- Eureka 서버는 클라이언트 요청에 따라 서비스 인스턴스 정보를 반환합니다.
- 반환된 정보에는
hostname
또는 IP 주소가 포함되며, 이는prefer-ip-address
설정에 따라 결정됩니다.
예시: Docker 및 클라우드 환경에서 활용
Docker 컨테이너 환경에서는 IP 주소가 동적으로 할당됩니다. 따라서 prefer-ip-address: true
를 사용하는 것이 일반적입니다.
Docker Compose 예시
docker-compose.yml
:
version: '3.8'
services:
eureka-server:
image: eureka-server:latest
ports:
- "8761:8761"
networks:
- eureka-network
service-provider:
image: service-provider:latest
environment:
- EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:8761/eureka/
- EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
networks:
- eureka-network
networks:
eureka-network:
driver: bridge
정리
키 | 설명 | 예시 |
---|---|---|
service-url.defaultZone |
Eureka 서버의 URL로, 클라이언트가 서비스 등록 및 검색을 위해 통신하는 주소 설정 | http://localhost:8761/eureka/ |
instance.hostname |
등록될 서비스 인스턴스의 호스트 이름. 서비스의 고유 식별자로 사용됨 | my-service |
instance.prefer-ip-address |
서비스 등록 시 IP 주소를 기본 식별자로 사용할지 여부. 클라우드 및 컨테이너 환경에서 유용함 | true |
이 설정을 통해 Eureka 기반의 동적 서비스 등록과 검색을 안정적으로 구현할 수 있습니다.
'Spring Microservice' 카테고리의 다른 글
Gossip Protocol (0) | 2024.12.11 |
---|---|
Client-side load balancing (0) | 2024.12.11 |
Spring boot의 서비스 디스커버리 개념 (0) | 2024.12.11 |
클라우드 기반 서비스 디스커버리 에이전트 (0) | 2024.12.11 |
Vault와 Spring Cloud Vault 통합 (0) | 2024.12.11 |