Spring Cloud Eureka Server自我保存和续订门槛
Posted
技术标签:
【中文标题】Spring Cloud Eureka Server自我保存和续订门槛【英文标题】:Spring Cloud Eureka Server self preservation and renew threshold 【发布时间】:2019-02-17 05:48:14 【问题描述】:(基本上就是两个 Eureka 服务器和三个 Eureka 客户端微服务)
我想删除以下消息:
紧急情况! EUREKA 可能不正确地声称实例已启动,但实际上并未启动。续订少于阈值,因此为了安全起见,实例不会过期。
error image
尤里卡服务器1:
spring.application.name=ms-service-discovery-1
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.server.enableSelfPreservation= true
eureka.instance.leaseRenewalIntervalInSeconds=1
eviction-interval-timer-in-ms: 1000
eureka.server.wait-time-in-ms-when-sync-empty: 1000
eureka.server.responseCacheUpdateIntervalMs: 1000
尤里卡服务器2:
spring.application.name=ms-service-discovery-2
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.server.enableSelfPreservation= true
eureka.instance.leaseRenewalIntervalInSeconds=1
eviction-interval-timer-in-ms: 1000
eureka.server.wait-time-in-ms-when-sync-empty: 1000
【问题讨论】:
在启动 eureka 时是否收到该消息?应用程序需要一段时间才能正确建立,因此这可能是正常行为。您是否也尝试过使用默认间隔值? 服务器启动了10多个小时,消息还在继续,在我上传服务器后出现了一点,当我停止了一个客户端微服务时 【参考方案1】:这是由于尤里卡的自我保护模式。如果心跳更新次数低于预期阈值,Eureka 服务器将停止驱逐所有实例。您的 Eureka 服务器中的警告表明这种情况发生了。
请尝试调整以下属性。 85% 是默认值。首先,试着降低下面的属性,比如0.50
eureka.renewalPercentThreshold=0.85
或者,您可以使用以下属性禁用自我保护模式。
eureka.enableSelfPreservation=false
注意 基本上,所有 Eureka 客户端在关闭时都会自行注销。如果它自己注销成功,就不会出现上述问题。
不幸的是,有时基于 Spring Cloud 的 Eureka 客户端在关闭时不会自行注销,并且症状因 Spring Cloud 版本而异。在大多数情况下,Dalston 和 Edgware 版本可以很好地取消注册。但 Finchley 的发布现在似乎并没有取消注册。
此外,您开始在 Eureka 环境中运行许多实例,上述消息将消失,因为只有一两个实例关闭不会达到阈值。
你可以找到更多关于自我保存模式的信息here
【讨论】:
以上是关于Spring Cloud Eureka Server自我保存和续订门槛的主要内容,如果未能解决你的问题,请参考以下文章
spring-cloud-starter-eureka-server 和 spring-cloud-starter-netflix-eureka-server的区别