인프런 커뮤니티 질문&답변

맑은요정님님의 프로필 이미지
맑은요정님

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

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

작성

·

1.2K

0

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

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

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

답변 2

7

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

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

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

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

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

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

저녁 맛있게 드세요~

맑은요정님님의 프로필 이미지
맑은요정님

작성한 질문수

질문하기