🔥 서비스 디스커버리 Eureka에 대하여 공부하고, Eureka 설정 및 실행하여 동작 확인하기
[ 서비스 디스커버리 ]
- 서비스 디스커버리는 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능을 한다.
- 각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신한다.
- 주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등이 있다.
[ Eureka ]
- 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리한다.
- 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 한다.
- 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장한다. (헬스 체크)
- 여러 인스턴스를 지원하여 고가용성을 유지한다.
[ Eureka 서버 설정 ]
- Eureka 서버는 서비스 레지스트리를 구성하는 중앙 서버이다.
Eureka 서버에 @EnableEurekaServer 추가
@SpringBootApplication
@EnableEurekaServer // 현재의 서버(애플리케이션)가 유레카 서버로써 동작한다
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
application.properties
spring.application.name=server
server.port=19090
# 유레카 서버에 자신을 등록할지 여부를 설정합니다.
eureka.client.register-with-eureka=false
# 유레카 서버로부터 레지스트리를 가져올지 여부를 설정합니다.
eureka.client.fetch-registry=false
# 유레카 서버 인스턴스의 호스트 이름을 설정합니다.
eureka.instance.hostname=localhost
# 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL을 설정합니다.
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
application.yml
server:
port: 19090
eureka:
client:
register-with-eureka: false # 다른 Eureka 서버에 이 서버를 등록하지 않음
fetch-registry: false # 다른 Eureka 서버의 레지스트리를 가져오지 않음
server:
enable-self-preservation: false # 자기 보호 모드 비활성화
Dependencies
[ Eureka 서버에 클라이언트 인스턴스 등록 ]
중앙 저장소 역할을 하는 Eureka 서버에 클라이언트 인스턴스 등록하기
[ Eureka 클라이언트 설정 ]
- 각 서비스 애플리케이션은 Eureka 서버에 자신의 위치를 등록한다.
- 'spring-cloud-starer-netflex-eureka-client' 의존성을 사용하고, 애플리케이션 이름만 설정파일에 있으면 Eureka에 등록된다.
application.yml
spring:
application:
name: product-service
server:
port: 19093
eureka:
client:
service-url:
# 유레카 서버의 주소 설정
defaultZone: http://localhost:19090/eureka/
Dependencies
[ Run ]
- 하나의 Eureka 서버에 Oreder, Product 클라이언트 인스턴스 연결 확인하기.
세 개의 서비스를 모두 실행 한다.
Eureka 서버 19090포트 접속
- Oreder, Product 클라이언트 인스턴스가 연결되어 있는것을 볼 수 있다.
- 서비스 디스커버리 Eureka를 통하여, 하나의 중앙 서버에 두 개의 클라이언트 인스턴스 서비스를 등록하여 연결되는 것을 확인하였다.
- 읽어주셔서 감사합니다 😊
'해피 코딩 > Spring' 카테고리의 다른 글
[MSA] API 게이트웨이 Spring Cloud Gateway (0) | 2024.08.05 |
---|---|
[MSA] 로드 밸런싱 Ribbon (0) | 2024.08.04 |
[NaverOpenAPI] NaverSearchAPI를 사용하여 쇼핑 상품 검색하기 (0) | 2024.07.19 |
[SpringSecurity] SpringSecurity의 Filter 동작 순서 이해하기 (1) | 2024.07.16 |
[Spring] SpringBoot에서 환경 변수 설정하기 (1) | 2024.07.16 |