• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

안녕하세요 user-service 4개 모두 죽였는데 계속 Eureka에 살아 있다고 나와요 ㅠ

21.04.13 17:05 작성 조회수 955

0

엄청난 명강의 감사드립니다. 강사님^^

아래 어떤 분께서 질문하셨는데 Eureka 서비스에 USER-SERVICE 등록하고 새로고침하면 정상 반영되는데 프로세스를 죽였고 일정시간을 기다렸음에도 불구하고 새로고침 하면 여전히 등록되어 있다고 나오는 현상이 있는 것 같은데

어떤 분께서 아래쪽에 질문을 했는데 이건 버그인가요? 아니면 나중에 강의 때 문제가 될까봐 한번 여쭤봅니다. 물론 유레가 자체를 내렸다 올리면 당연히 instances 목록에는 없습니다. 한번 체크 부탁드리겠습니다.^^

답변 2

·

답변을 작성해보세요.

7

안녕하세요, 이도원입니다.

시스템에서 비정상적으로 종료된 프로세스에 대해서 유레카에서 정상적으로 인스턴스(서비스)를 종료하지 못하는 경우가 있습니다. 

Application에서 일정한 시간 내에 Eureka 서버로 heartbeat를 전달하지 않을 경우 Eureka 서버에서 자동으로 등록된 인스턴스를 삭제하게 됩니다. 이 API는 Postman 등으로 직접 실행해서 인스턴스를 삭제하실 수도 있습니다. Application에 등록된 인스턴스가 어떤 목록이 있는지를 확인해 보시고, 직접 서비스를 삭제해 보시기 바랍니다. (DELETE /eureka/v2/apps/appID/instanceID)

추가로, Eureka 서버에는 enableSelfPreservation 모드가 있는데, 네트워크 등의 문제로 Eureka 서버와의 통신은 되지 않지만, 해당 서비스는 정상적인 상태일 수도 있는데, 이 때 서비스의 등록을 삭제하지 않기 위한 옵션입니다. 실제 운영 상태에서는 true로, 개발 단계에서는 false로 설정해 보실 수 있습니다. 

eureka:  

    client: 

register-with-eureka: false 

fetch-registry: false

    server:

        enable-self-preservation: false

다음은, Eureka Client의 설정에서 Eureka 서버로 heartbeat를 전송하는 주기를 짧게하는 설정입니다. 

eureka:  

client:  

service-url:  

default-zone: ${EUREKA_URL:localhost:8761/eureka/} # 디스커버리 주소  

instance:  

lease-renewal-interval-in-seconds: 1 # 디스커버리한테 1초마다 하트비트 전송  (기본 30초)

lease-expiration-duration-in-seconds: 2 # 디스커버리는 서비스 등록 해제 하기 전에 마지막 하트비트에서부터 2초 기다림

Eureka 관련 API는 이곳에서(https://github.com/Netflix/eureka/wiki/Eureka-REST-operations)에서 참조하실 수 있습니다. 예를 들어, Eureka 대시보드가 아닌 XML 포맷으로 보실 수 있도록 다음과 같은 API도 사용하실 수 있습니다. 

http://127.0.0.1:8761/eureka/apps/DEMO-APP

감사합니다. 

0

정말 잘 없어집니다. 강사님 ^^

성의있는 답변과 완벽한 해결책까지 감사 또 감사드립니다.

앞으로 강사님 강의 에서 많이 배우도록 노력하겠습니다.

저녁 맛있게 드세요~