若是在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