작성
·
1.2K
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
정말 잘 없어집니다. 강사님 ^^
성의있는 답변과 완벽한 해결책까지 감사 또 감사드립니다.
앞으로 강사님 강의 에서 많이 배우도록 노력하겠습니다.
저녁 맛있게 드세요~