spring cloud版本为<version>Edgware.SR3</version> ,并且部署了spring-boot-admin-server

相关服务每隔20秒左右会出现:

2019-04-18 09:26:56.919  INFO [zbcloud-server-gateway,330af47ba126aca5,330af47ba126aca5,false] 1 --- [nio-8763-exec-4] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://172.20.4.51:8762/
2019-04-18 09:26:59.926  WARN [zbcloud-server-gateway,330af47ba126aca5,330af47ba126aca5,false] 1 --- [nio-8763-exec-4] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://172.20.4.51:8762/zbcloud-server-gateway/default": Host is unreachable (Host unreachable); nested exception is java.net.NoRouteToHostException: Host is unreachable (Host unreachable)

经查询时由于spring-boot-admin-server触发了健康检查,而Spring-Cloud-Config-server由于重启等原因pod的IP发生了变更,真正去访问的地址是直接从 properties.getRawUri()获取的,它已经是一个固化的值,而不是通过服务发现机制来动态获取的,从而导致无法请求配置中心。

解决方案:

  • 部署在机器上而不是容器上,避免IP的变动

  • 可以考虑关闭微服务队config客户端的健康检查,增加参数 health.config.enabled=false;但是这个操作有一个弊端,虽然迁移不会引发服务时好时坏的问题了,但是如果有动态配置刷新需求,如果迁移了配置中心,刷新配置操作也是会失败的。

转载于:https://my.oschina.net/u/1241604/blog/3038503

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐