MSA
7. Service Registry - Eureka
wavid
2020. 12. 23. 16:37
- Ribbon 사용 시 서버 목록을 yml에 직접 넣었는데, 자동화 할 방법은?
- '서버가 새롭게 시작되면 그것을 감지하여 목록에 자동으로 추가되고, 서버가 종료되면 자동으로 목록에서 삭제하기 위한 방법은 없을까?'
Service Registry
- Service Registry
- 서비스 탐색, 등록
- 클라우드의 전화번호부
- (단점) 침투적 방식 코드 변경
- DiscoveryClient
- spring-cloud에서 서비스 레지스트리 사용 부분을 추상화(Interface)
- Eureka, Consul, Zookeeper, etcd 등의 구현체가 존재
- Ribbon은 Eureka와 결합하여 사용 할 수 있으며, 서버 목록을 자동으로 관리.
Eureka Server (Registry) 만들기
@EnableEurekaServer
@SpringBootApplication
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceApplication.class);
}
}
- @EnableEurekaServer 어노테이션을 적용하면 됨
Eureka Client 만들기
- 내가 호출의 대상이 되고 싶을 때
@EnableEurekaClient
@SpringBootApplication
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceApplication.class);
}
}
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
- @EnableEurekaClient 어노테이션을 적용
- 설정파일에 Eureka 서버 정보 등록
- 기존 listOfServers 설정 제거
Eureka in Spring Cloud
- Eureka 클라이언트 설정을 해놨다면, 서버 시작 시 Eureka Server(Registry)에 자동으로 자신의 상태를 등록함 (Up) (eureka.client-register-with-eureka : true)
- 주기적으로 HeartBeat로 Eureka 서버에 자신이 살아있음을 알림 (eureka.instance.lease-renewal-interval-in-seconds: 30)
- 서버 종료 시 Eureka Server에 자신의 상태 변경 (Down) 혹은 자신의 목록 삭제
- Eureka 상에 등록된 이름은 'spring.application.name' 이거를 통해서 등록.
정리
- @EnableEurekaServer / @EnableEurekaClient를 통해 서버 구축, 클라이언트 Enable 가능함.
- @EnableEurekaClient를 붙인 Application은 Eureka 서버로부터 남의 주소를 가져오는 역할과 자신의 주소를 등록하는 역할 둘 다 수행 가능하다.
- Eureka Client가 Eureka Server에 자신을 등록할 때 'spring.application.name'이 이름으로 사용됨.
[참고 및 출처]
www.youtube.com/watch?v=iIqamVxYmUk&list=PL9mhQYIlKEhdtYdxxZ6hZeb0va2Gm17A5&index=6