解决:com.netflix.client.ClientException: Load balancer does not have available server for client: XXX

问题背景:两个服务A和B,A使用Feign调用服务B的接口报错,显示B服务不可用,具体如下:

产生以上错误的原因是B服务没有被发现,解决上面的问题可以从3个方面入手排查:

 

排查一:

首先到注册中心列表查看服务是否存在,是否成功注册:

以上,服务已成功注册,若不存在需要在B服务的pom文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

 

排查二:

在排除第一种情况外,还可能是因为服务启动顺序的原因影响:

       服务A和B,A调用B(A->B)。

  • 场景一:先启动了A,再启动了B。但是这时候,怎么都调用不到B。
  • 场景二:先启动B,再启动A,这是可以正常调用。然后挂掉B,再重启。之后就怎么也调用不到B了。

如果要排除以上因素需要在B服务的application.properties的文件中添加以下配置:

ribbon.eureka.enable=true

排查三:

排除前两种原因,最后就是看下配置文件中定义的 服务名 是否正确了。

以上B服务的配置文件中应用名要和报错的服务名一致。 

发布了92 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41231928/article/details/103487700