若是在Eureka Server的首頁看到如下這段提示,則說明Eureka已經進入了保護模式。 spring
保護模式主要用於一組客戶端和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