Load balancer does not have available server for client在Zuul中报错的解决办法

问题:

Spring Cloud 的路由Zuul,在访问对应的路由时,uri返回500错误,并且检查服务器报错:
Load balancer does not have available server for client在Zuul中报错的解决办法_第1张图片
Load balancer does not have available server for client在Zuul中报错的解决办法_第2张图片

解决办法:

pom文件中的引用"spring-cloud-netflix-eureka-client"改为starter的 “spring-cloud-starter-netflix-eureka-client”

解决思路:

看提示错误堆栈发生在netfix client进行load balance的时候。因为zuul默认开启负载均衡,需要实现loadbalanceclient接口。而ribbon需要结合具体的客户端去实现。ribbon-eureka的loadbalancer可以实现此接口。查看引用的包,没有包含ribbon-eureka工具库。如下图所示:
图1 zuul包下只引用的ribbon工具包,没有引用ribbon客户端。

Load balancer does not have available server for client在Zuul中报错的解决办法_第3张图片
图2为netflix纯粹的客户端,也没有与ribbon结合的工具库。
Load balancer does not have available server for client在Zuul中报错的解决办法_第4张图片

图3为starter-netflix-eureka-client库,包含了ribbon-eureka工具库。因此引用stater的eureka client库,就可以解决报错问题。
Load balancer does not have available server for client在Zuul中报错的解决办法_第5张图片

你可能感兴趣的:(后端开发,java,系统架构)