关闭 Eureka Server 的自我保护

如果 Eureka Client 关了,Eureka Server 会自动注销该实例,也可以通过命令关闭 (=> 注销 Eureka 服务 )。
但是如果实例的总数比较少,比如开发时一般只有一个实例,此时并不会自动从 Eureka Server 中注销,Eureka Server 会默认开启自我保护,自我保护状态下不会删除任何实例。

通过修改 Eureka Server 的配置文件(application.yml)可以关闭自我保护。

eureka:
  server:
    enableSelfPreservation: false
  

通过配置 Eureka Client 的 application.yml 来缩短实例从 Eureka Server 注销的时间。

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 1
    leaseExpirationDurationInSeconds: 2
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/
    healthcheck:
      enabled: true
    lease:
      duration: 5
  

关闭自我保护后,Eureka 界面会出现如下一行红字。

THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.

参考:

  1. Eureka never unregisters a service
  2. spring-cloud-eureka-example