728x90
반응형
목차는 MSA 에 있습니다.
나중에 찾아보기 위해 정리했습니다. 내용을 계속해서 추가할 예정입니다.
[MSA 4편] Service Discovery (Eureka)
Service Discovery 란?
- MSA 환경에서는 도메인 별로 서버가 나뉘기에 서버가 추가되거나 삭제되는 등의 작업이 빈번하게 발생합니다. 그에 따라 매번 소스에 하드코딩해서 서버 정보(IP, PORT 등) 을 변경할 수는 없습니다.
- Service Discovery 는 도메인 별 서버 정보를 가지고 있는 상태에서 클라이언트에서 특정 서비스를 요청할 때, IP 와 PORT 를 제공합니다.
Eureka
- Service Discovery 중 하나인 소프트웨어 입니다.
- 특정 서비스에 대한 서버 정보들을 관리하여 로드밸런싱 및 장애 처리 기능을 가지고 있습니다.
로드밸런싱
- 특정 서비스에 대한 서버 정보를 가지고 있기에 트래픽을 골고루 분산시켜주는 기능을 프로그래밍으로 제어가 가능합니다.
장애 조치
- Eureka 서버에서 주기적으로 등록된 서버에게 Health Check 를 해서 서버 상태를 체크하며, 서버가 죽었으면 해당 서버에는 응답을 redirect 하지 않습니다.
Spring boot Eureka source
- 아래와 같이 세팅하고 Eureka 서버, Eureka Client 를 띄우고 localhost:8761 로 접속하면 Eureka Admin 에 연결된 정보가 보입니다.
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
}
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
server:
port: 8761
spring:
application:
name: eurekaServerService
eureka:
client:
register-with-eureka: false # 유레카 서버에 등록하는건데 필요가 없어서 false
fetch-registry: false # 유레카 서버에 등록하는건데 등록할 필요가 없어서 false
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientServiceApplication.class, args);
}
}
server:
port: 0 # port 0 으로 설정해놓으면 랜덤으로 설정됨.
spring:
application:
name: eureka-client-service # 이렇게 등록해놓으면 Eureka Server Admin 에서 eureka-client-service 라고 나옴.
eureka:
instance:
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} # port 0 으로 설정한 상태에서 여러 eureka-client-service web 을 띄워도 하나로만 인식됨. 그걸 방지하기 위해 instance id 설정
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka # eureka 서버의 IP 를 적어주면 됨. 즉, eureka service 를 제공하는 서버 url
fetch-registry: true # eureka 서버로부터 인스턴스들의 정보를 주기적으로 가져오는 것에 대한 설정
register-with-eureka: true # eureka 에 등록하겠다는 설정.
기타 (Eureka, Ribbon)
- Eureka 는 도메인 서비스 서버에 (IP, PORT 등) 대한 정보를 가지고 있는 Service Discovery 입니다.
- Ribbon 은 Application Load balancer 로 Application 단에서 load balancing 을 해주는 오픈소스입니다.
- Eureka 와 연동하여 사용할 수 있습니다.
- 둘이 성격이 비슷해보지만 역할이 다르니 별도로 정리했습니다.
'MSA' 카테고리의 다른 글
[MSA 5편] API Gateway Service 정리 (0) | 2022.09.21 |
---|---|
[MSA 3편] CQRS 정리 (0) | 2022.08.03 |
[MSA 2편] 보상 트랜잭션 (SAGA 패턴) (2) | 2022.06.11 |
[MSA 1편] MSA 기본 개념 정리 (0) | 2022.06.11 |
댓글