[TIL] Spring-Cloud-Eureka

김건우·2024년 8월 1일

[TIL]

목록 보기
2/25

서비스 디스커버리 (Eureka)

  • MSA에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능
  • 각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신
  • 주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등

Eureka

  • 넷플릭스가 개발한 서비스 디스커버리 서버.
  • 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 확인해 가용성 보장
  • 여러 인스턴스를 지원해 고가용성을 유지할 수 있음.

server와 client로 서버 설정을 달리한다.

  • server
server:
  port: 8761

eureka:
  client:
    register-with-eureka: false  # 다른 Eureka 서버에 이 서버를 등록하지 않음
    fetch-registry: false  # 다른 Eureka 서버의 레지스트리를 가져오지 않음
  server:
    enable-self-preservation: false  # 자기 보호 모드 비활성화
  • client
spring:
  application:
    name: my-service

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  # Eureka 서버 URL
    register-with-eureka: true  # Eureka 서버에 등록
    fetch-registry: true  # Eureka 서버로부터 레지스트리 정보 가져오기
  instance:
    hostname: localhost  # 클라이언트 호스트 이름
    prefer-ip-address: true  # IP 주소 사용 선호
    lease-renewal-interval-in-seconds: 30  # 리스 갱신 간격
    lease-expiration-duration-in-seconds: 90  # 리스 만료 기간

각 서비스 어플리케이션은 Eureka 서버에 자신의 위치를 등록하고, 클라이언트 어플리케이션은 Eureka 서버에게 필요한 서비스의 위치를 조회한다.

크게 ResTemplateFeignClinet 방법이 있다.

또한 Eureka 서버가 주기적으로 서비스 인스턴스의 상태를 확인해 가용성을 유지한다.

기본 헬스 체크 엔드포인트인 /actuator/health 로 상태를 확인해 서비스 장애가 발생하면 Eureka 서버는 해당 인스턴스를 레지스트에서 제거해 다른 서비스의 접근을 차단한다.


유레카 server를 띄우면 다음처럼 기본 제공하는 UI를 확인할 수가 있다.

DS REplicas 탭에서 열린 client 서버들을 확인할 수 있고, 성태 값 또한 확인 가능하다.

profile
공부 정리용

1개의 댓글

comment-user-thumbnail
2024년 8월 2일

오늘 학습도 화이팅 입니다 !

답글 달기