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

相关文章
相关标签/搜索