最全解决:微服务之间调用出现Load balancer does not have available server for client

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 最全解决:微服务之间调用出现Load balancer does not have available server for client

问题:

背景:现在是一个服务A要调用服务B(media-api)中的方法上传文件,因此需要再服务A中写一个feignclient,里面包含的是要调用的B服务的方法,然后出现找不到目标的情况

问题分析:

首先要确保服务和要被调用的服务都已经注册上,这里我用的是nacos。可以看到都是正常注册上来了的。

然后检查自己有没有写错对应的服务名称,看看对应的调用请求是否有错。

然后点击在第一个出问题的地方点进去,在该方法上打个断点看看打下来的请求有没有问题,

在这发现uri请求应该是没有问题的,看到这的/media后面才发现是我网关没有启动

正常就应该打到网关,然后网关进行负载均衡的转到media-api服务

而media-api服务下的配置就是

问题解决:

方案一:将服务注册上

可以试试看用eureka进行注册。nacos和erueka都是进行注册的,选择一种方案注册服务即可。

先pom配置

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

然后application上或者nacos上进行配置

ribbon:
  eureka:
    enabled: true

方案二:取消eurka

如果你用nacos注册上,但还是报错。可以试试将eureka取消 ribbon.eureka.enabled=false;

ribbon:
  ConnectTimeout: 60000 #连接超时时间
  ReadTimeout: 60000 #读超时时间
  MaxAutoRetries: 0 #重试次数
  MaxAutoRetriesNextServer: 1 #切换实例的重试次数
  eureka:
    enabled: false

或者配置这个,这个就是禁用eureka然后将请求打到下面的服务提供者下,但这种写法比较固定。

大部分情况不是我们想要的

ribbon:
  eureka:
    enabled: false
## 这个IFeignService是加了@FeignClient注解的类
MediaServiceClient:
  ribbon:
    ## 服务提供者的地址,不是服务注册中心的地址
    listOfServers: http://localhost:60350

或者这个

eureka:
  client:
    register-with-eureka: false #此EurekaServer不再注册到其他注册中心
    fetch-registry: false #不再从其他注册中心拉取服务信息

方案三:检查拼写

看看自己的要调用的服务名字有没有写错,和注册上nacos的名字是否一致。

然后检查自己的请求是否有错误,请求有错也是没有办法找到该服务的。看看自己的nginx,网关等有没有打开

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
负载均衡 算法 应用服务中间件
Nginx系列教程(08) - Upstream Server 负载均衡
Nginx系列教程(08) - Upstream Server 负载均衡
618 0
|
存储 SpringCloudAlibaba Cloud Native
【微服务33】分布式事务Seata源码解析一:在IDEA中启动Seata Server
【微服务33】分布式事务Seata源码解析一:在IDEA中启动Seata Server
1109 0
【微服务33】分布式事务Seata源码解析一:在IDEA中启动Seata Server
|
Java 微服务
【Java异常】com.netflix.client.ClientException: Load balancer does not have available server for client
【Java异常】com.netflix.client.ClientException: Load balancer does not have available server for client
497 0
|
7月前
|
负载均衡 Java 微服务
Java错误:com.netflix.client.ClientException: Load balancer does not have available server for client
Java错误:com.netflix.client.ClientException: Load balancer does not have available server for client
|
7月前
|
Java Nacos Docker
Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)
Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)
196 0
|
负载均衡 Java 应用服务中间件
nginx loadbalance spring server负载均衡
nginx loadbalance spring server负载均衡
244 0
|
Java Maven 微服务
Spring Cloud【Finchley】-03将微服务注册到Eureka Server上 + 为Eureka Server添加用户认证
Spring Cloud【Finchley】-03将微服务注册到Eureka Server上 + 为Eureka Server添加用户认证
130 0
Spring Cloud【Finchley】-03将微服务注册到Eureka Server上 + 为Eureka Server添加用户认证
|
SpringCloudAlibaba 负载均衡 算法
|
Cloud Native 前端开发 Java
【微服务36】分布式事务Seata源码解析四:图解Seata Client 如何与Seata Server建立连接、通信
【微服务36】分布式事务Seata源码解析四:图解Seata Client 如何与Seata Server建立连接、通信
688 0
【微服务36】分布式事务Seata源码解析四:图解Seata Client 如何与Seata Server建立连接、通信
|
JSON SpringCloudAlibaba 负载均衡
【微服务35】分布式事务Seata源码解析三:从Spring Boot特性来看Seata Client 启动时都做了什么
【微服务35】分布式事务Seata源码解析三:从Spring Boot特性来看Seata Client 启动时都做了什么
860 0
【微服务35】分布式事务Seata源码解析三:从Spring Boot特性来看Seata Client 启动时都做了什么