Eureka 서버의 셀프 프리저베이션(Self-Preservation) 모드

날아올라돼지야·2024년 8월 28일
0

Eureka 대시보드에서 볼 수 있는 경고는 셀프 프리저베이션(Self-Preservation) 모드와 관련이 있으며, 이 개념을 이해하면 경고 메시지가 더 잘 이해될 것입니다.

1. 셀프 프리저베이션(Self-Preservation) 모드란?

셀프 프리저베이션 모드는 Eureka 서버가 네트워크 문제나 일시적인 지연으로 인해 서비스 인스턴스의 하트비트를 받지 못할 때, 잘못된 판단으로 서비스 인스턴스를 제거하지 않도록 하는 보호 메커니즘입니다.

정상적인 상황
  • Eureka 서버는 등록된 마이크로서비스 인스턴스로부터 일정 주기(기본 30초)마다 하트비트를 수신합니다.
  • 하트비트를 수신하지 못한 경우, 해당 인스턴스가 비정상적이거나 중단되었다고 판단하여 서비스 레지스트리에서 제거합니다.
네트워크 문제 발생 시
  • 네트워크 문제로 인해 일시적으로 하트비트를 받지 못할 수 있습니다. 이때 Eureka 서버가 모든 인스턴스를 제거하면 서비스 레지스트리가 비어 버릴 수 있습니다.
  • 이러한 상황을 방지하기 위해 셀프 프리저베이션 모드가 활성화됩니다.

2. 셀프 프리저베이션 모드 동작 방식

  • Eureka 서버가 다수의 인스턴스로부터 하트비트를 받지 못하면, 자동으로 셀프 프리저베이션 모드에 진입합니다.
  • 이 모드에 들어가면 하트비트를 받지 못해도 인스턴스를 제거하지 않습니다.
  • 네트워크 문제가 해결되면 하트비트를 정상적으로 수신하기 시작하고, Eureka 서버는 셀프 프리저베이션 모드를 종료합니다.

3. 셀프 프리저베이션 모드의 예시

  • 네트워크 문제가 발생하여 Loans 마이크로서비스의 5개의 인스턴스 중 2개의 인스턴스(Instance 4Instance 5)가 하트비트를 보내지 못한다고 가정합니다.
  • Eureka 서버는 하트비트를 3번(총 90초) 받지 못한 후에만 해당 인스턴스를 서비스 레지스트리에서 제거합니다.
  • 네트워크 문제가 더 심해져 Instance 3도 하트비트를 보내지 못하게 되면, Eureka 서버셀프 프리저베이션 모드에 진입하고 더 이상의 인스턴스 제거를 중단합니다.

4. 셀프 프리저베이션 모드에 영향을 미치는 속성

  • eureka.instance.lease-renewal-interval-in-seconds: 기본값은 30초로, 하트비트 주기를 설정합니다.
  • eureka.instance.lease-expiration-duration-in-seconds: 기본값은 90초로, 하트비트를 수신하지 못할 때까지 기다리는 시간을 설정합니다.
  • eureka.server.eviction-interval-timer-milliseconds: 기본값은 60초로, 인스턴스 제거 작업의 주기를 설정합니다.
  • eureka.server.renewal-percent-threshold: 기본값은 85%로, 하트비트를 받을 것으로 기대되는 인스턴스의 최소 비율을 설정합니다.
  • eureka.server.enable-self-preservation: 기본값은 true로, 셀프 프리저베이션 모드의 활성화 여부를 결정합니다.

5. Eureka 대시보드 경고 메시지 해석

경고 메시지:

Emergency! Eureka may be incorrectly claiming instances are up when they are not. Renewals are lesser than threshold and hence the instances are not being expired just to be safe.

이 메시지는 하트비트를 받지 못한 인스턴스가 일정 기준치 이하일 때 Eureka 서버가 인스턴스를 제거하지 않고 셀프 프리저베이션 모드로 전환되었음을 나타냅니다. 네트워크 문제가 해결되면 이 경고는 자동으로 사라집니다.

결론

Eureka 서버셀프 프리저베이션 모드는 네트워크 문제나 일시적인 시스템 지연으로 인해 발생할 수 있는 잘못된 인스턴스 제거를 방지하는 중요한 메커니즘입니다. 이 모드를 통해 마이크로서비스 네트워크의 안정성과 가용성을 유지할 수 있습니다. 경고 메시지를 봤을 때 당황하지 말고, 네트워크 상태를 점검한 후 해결될 때까지 기다리면 됩니다.

profile
무슨 생각하며 사니

0개의 댓글