eureka未自动删除过期的服务
现象
微服务gateway中反复出现连接某服务超时(IP有多个)
经核对,该ip不是k8s内部ip(非nodeip、serviceip、podip、containerip)
最终发现问题出现在注册到eureka中的某个微服务:该微服务注册至eureka中的过期地址未自动删除
原因分析
当触发自我保护机制后Eureka Server就会锁定服务列表,不忘服务列表内的服务过期,不过这样我们在访问服务时,得到的服务很可能是已经失效的实例,如果是这样我们就无法访问到期望的资源,会导致服务调用失败
解决方法
- 方案一:重启eureka(本次采取的方式。但不建议使用该方式,会导致所有后端服务无法使用,直到eureka服务正常运行)
- 方案二:通过接口删除eureka中的过期地址
参考:https://blog.51cto.com/u_15697790/5419594
- 方案三:在方案一的基础上,关闭eureka的自我保护,把超时断开的服务自动删除
eureka:
instance:
hostname: eureka
# 关闭自我保护,把超时断开的服务自动删除
server:
enable-self-preservation: false