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的区别

spring cloud 之eureka配置

Spring Cloud Eureka整合使用和配置

spring cloud的Eureka自定义界面,启动界面自定义

Eureka 注册中心

cloud的Eureka服务中心的建立和模块注册进服务中心