eureka坑

eureka和springbootAdmin结合时, 工程运行一段时间就反复出现如下错误:

2023-07-19 14:02:32.439 ERROR 22050 --- [freshExecutor-0] d.c.b.a.s.c.d.InstanceDiscoveryListener  : Couldn't register instance for discovered instance (serviceId=FACILITATOR, instanceId=test-reguler:facilitator:8781, url= http://test-reguler:8781)

java.lang.IllegalArgumentException: 'healthUrl' is not valid: /ksb-facilitator/actuator/health

原因直白的说就是healthUrl参数配置错误, 查看springbootAdmin源码, healthUrl参数需要是绝对地址.奇怪的是,服务之前没有出现过这个错误.且springbootAdmin后台所有服务都在.

经过回想最近改动点, 排查到fetchRegistry配置由之前的false改为了true.因为最近要部署高可用eureka.

fetchRegistry这个参数开启后, 在工程整合了springbootAdmin时,eureka会自动把获取到的微服务清单都同步注册到springbootAdmin, 而我们的微服务应用在 eureka.instance.health-check-url-path配置上有些特殊,有server.servlet.context-path前缀, 但eureka似乎没有做好兼容, 这个有时间再查源码比对, 可能还有配置开关可以控制不自动同步注册.

结论就是:eureka和springbootAdmin结合时, 开启fetchRegistry会自动注册,虽然方便但不知道的情况下各种报错反而是坑.

如下时修改过的正确配置:

eureka:
  dashboard:
    enabled: false
    # 路径不能配置在/eureka/之下,否则不生效
    path: '/eureka_dashboard'
  instance:
    prefer-ip-address: true
    appname: ${spring.application.name}
  client:
    registerWithEureka: true
    # 开启会一直报错Couldn't register instance for discovered instance,
    # 因为eureka会把获取到的微服务都同步注册到springbootAdmin,但微服务侧又没有适配过配置项导致注册失败
    # 比如 eureka.instance.health-check-url-path配置错误, 这个待后期开启多个注册中心时,再优化
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://127.0.0.1:${server.port}/eureka/
  server:
    enable-self-preservation: false # 关闭自我保护
    eviction-interval-timer-in-ms: 5000  # 定时清理间隔 5秒
    response-cache-update-interval-ms: 1000 # 响应缓存时间 1秒
    use-read-only-response-cache: false # 禁用ReadOnlyMap缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值