java.lang.IllegalStateException: No instances available for XXX

Ribbon进行负载均衡的时候有不少坑,No instances available for XXX 就是其中之一,百度找到的答案也不全,东拼西凑的消耗了不少时间,所幸最后还是解决了!
那么如何解决这个问题呢?
首先查看Rureka配置:
我的配置如下:

server:
  port: 7001
#Eureka配置
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false # 是否将自己注册到Eureka服务器中,本身是服务器,无 需注册
    fetch-registry: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并 不需要去检索服务
    service-url:
      defaultZone: http://eureka7002.com:7002/eureka/
      # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个defaultZone地址

7002,7003…等配置和上面7001差不多。
服务提供者配置:

#配置端口
server:
  port: 8001
#mybatis
mybatis:
  type-aliases-package: com.xu.springcloud.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
#spring的配置 
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloud01?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: 用户名
    password: 密码
    dbcp2:
      min-idle: 5
      initial-size: 5
      max-total: 5
      max-wait-millis: 200
#eureka配置
eureka:
  client:
       service-url:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
  instance:
    instance-id: springcloud-provider-dept8001 # 重点,和client平级
    prefer-ip-address: false # true访问路径可以显示IP地址

注意 prefer-ip-address: false 配置的是false,不配默认也行。
服务消费者配置:

server:
  port: 80
#Eureka配置
eureka:
  client:
    register-with-eureka: false # false 表示不向注册中心注册自己
    service-url:
      defaultZone:
        http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

按照这个配置就应该可以成功,还有一点在服务消费者那导包的时候,由于netflix-eureka-client中已经集成了ribbon,所以导包的时候只要netflix-eureka-client这个就可以了,导两个很可能也会报错!
我最后访问到了:
image-20200811112313030

你可能感兴趣的:(SpringCloud,ribbon)