背景说明
最近在b站学习谷粒商城,到了nacos和gateway做网关,实现不同路由的转发,一直报错
开发环境说明一下(由于都是idea下一步下一步创建的,没太注意版本):
springboot:2.4.5
spring-cloud.version:2020.0.2
spring-cloud-alibaba.version:2.1.0.RELEASE
server:
port: 88
spring:
application:
name: gulimail-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: admin_route
uri: lb://renren-fast
predicates:
- Path=/api/**
filters: # 这段过滤器和验证码有关,api内容缓存了/renren-fast,还得注意/renren-fast也注册到nacos中
- RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
就是利用断言加过滤的方式,把发送到http://localhost:88/api/xx的地址转到由nacos中的/renren-fast/xxx
出现问题
2021-05-16 23:33:15.565 WARN 22552 --- [ctor-http-nio-3] o.s.c.l.core.RoundRobinLoadBalancer : No servers available for service: renren-fast
2021-05-16 23:33:15.673 WARN 22552 --- [ctor-http-nio-3] o.s.c.l.core.RoundRobinLoadBalancer : No servers available for service: renren-fast
No servers available for service:xxxx,后台一直报错,一直503。
这个问题都困扰我一天了。
解决
检查版本、检查版本、检查版本,这个是很容易被忽略的。
各个版本对照表:
Spring Cloud Version|Spring Cloud Alibaba Version|Spring Boot Version
:--:|:--:|:--:
Spring Cloud Hoxton.SR3|2.2.1.RELEASE|2.2.5.RELEASE
Spring Cloud Hoxton.RELEASE|2.2.1.RELEASE|2.2.X.RELEASE
Spring Cloud Greenwich|2.1.2.RELEASE|2.1.X.RELEASE
Spring Cloud Finchley|2.0.2.RELEASE|2.0.X.RELEASE
Spring Cloud Edgware|1.5.1.RELEASE(停止维护,建议升级)|1.5.X.RELEASE
如果各项都检查没有没有,不妨通过检查版本试一下。
其他问题说明
- 注意uri中lb后面的名称是否在nacos中注册成功,并且,lb后面的名称为nacos中注册中心的名称保持一致
- 注意uri中lb后面的名称的书写规范名称。好像是不能用_(下划线),但是可以用 -(短横杠)
原文地址:https://blog.csdn.net/weixin_41267342/article/details/111462594 - 检查routes中的配置
- 网上说添加依赖,完全不需要。版本选对后,删除以下依赖,亲测可以正常访问
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
评论区