Eureka註冊中心的自我保護模式

若是在Eureka Server的首頁看到如下這段提示,則說明Eureka已經進入了保護模式。 spring

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

保護模式主要用於一組客戶端和Eureka Server之間存在網絡分區場景下或者出現網絡問題的保護。一旦進入保護模式,Eureka Server將會嘗試保護其服務註冊表中的信息,再也不刪除服務註冊表中的數據(也就是不會註銷任何微服務)。 服務器


如何解決Eureka Server不踢出已關停的節點的問題 網絡

在開發過程當中,咱們經常但願Eureka Server可以迅速有效地踢出已關停的節點,可是新手因爲Eureka自我保護模式,以及心跳週期長的緣由,經常會遇到Eureka Server不踢出已關停的節點的問題。spring-boot

解決方法以下: 微服務

(1) Eureka Server端:配置關閉自我保護,並按需配置Eureka Server清理無效節點的時間間隔。 spa

eureka.server.enable-self-preservation # 設爲false,關閉自我保護 
eureka.server.eviction-interval-timer-in-ms # 清理間隔(單位毫秒,默認是60*1000

(2) Eureka Client端:配置開啓健康檢查,並按需配置續約更新時間和到期時間。 code

eureka.client.healthcheck.enabled # 開啓健康檢查(須要spring-boot-starter-actuator依賴) 
eureka.instance.lease-renewal-interval-in-seconds # 續約更新時間間隔(默認30秒) 
eureka.instance.lease-expiration-duration-in-seconds # 續約到期時間(默認90秒) 

注意: 
更改Eureka更新頻率將打破服務器的自我保護功能,生產環境下不建議自定義這些配置。 server

相關文章
相關標籤/搜索