如何调整Netflix eureka自我保存以处理自动缩放?

时间:2018-10-18 16:00:55

标签: netflix-eureka spring-cloud-netflix service-discovery

永不过期的自我保护功能对群集自动扩展功能不友好。 当我们在减少负载后缩减服务规模时,大量关闭的实例可能会触发自我保留。

据我了解,自我保护旨在容忍短期网络问题。但是已经存在一些设置,可以让我们调整一些公差窗口:

eureka.instance.lease-expiration-duration-in-seconds = 90
eureka.instance.lease-renewal-interval-in-seconds = 30

我面对一些建议,不要关闭自我保护,但似乎带来的痛苦大于收获。我想念什么吗?

1 个答案:

答案 0 :(得分:1)

首先,您需要区分Eureka客户端的正常关闭不正常终止。自我保留模式只关心不干净的终止

也就是说,当您缩减服务器规模时,如果您使应用程序正常关闭(注销),则不会激活自我保存模式。

如果您使用的是基于Spring Cloud的Eureka客户端,则在应用程序关闭时将完成此正常关闭。问题是某些Spring云版本存在有关发送关闭(Eureka注销)消息的问题。因此,如果要确定,只需在缩减实例后立即通过REST API将注销消息发送到Eureka服务器。

另一种可能的方法是降低自我保存的门槛。

eureka:
  server:
    renewal-percent-threshold: 0.50

还有一件事。 更改eureka.instance.leaseRenewalIntervalInSeconds的值时需要小心。原始的Eureka服务器源代码在计算自我保留模式的阈值时假定该值为30秒。我不确定这个硬编码部分是否仍然存在于最新的Spring云发行版中。您需要仔细检查。