No instances available for XXX

解释

No instances available for XXX
没有名为XXX的可用实例

背景

springcloud+eureka+ribbon搭建负载均衡

解决方案

前提:除去负载均衡模块,其余模块均可正常运行
1、检查客户端pom.xml是否引入引入如下ribbon相关依赖

	<!--ribbon相关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

2、客户端配置文件(application.yml)是否配置eureka相关信息

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: # eureka(或集群)服务

3、消费端配置类上是否配置@LoadBalanced注解

@Bean
   @LoadBalanced
   public RestTemplate getRestTemplate(){
       return new RestTemplate();
   }

4、消费端启动类是否添加@EnableEurekaClient注解
5、消费端url前缀应由引入ribbon前的Ip:port修改为eureka中显示的服务名称
该服务名称是在服务端配置文件中配置,如下:

spring:
  application:
    name: your-service

eureka默认将服务名称转化为大写,且ribbon在负载均衡时仅识别eureka中的大写服务,所以消费端的url前缀为大写的YOUR-SERVICE

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐