SpringCloud gateway 路由转发 503 错误踩坑
使用gateway 做转发, 其中配置为:
server: port: 8891 spring: application: name: gateway-service cloud: nacos: discovery: server-addr: 192.168.1.103:8848 namespace: e48247ce-b5a3-4fb5-b25c-409b3a015dbd gateway: discovery: locator: enable: true # gateway 可以从 nacos 发现微服务 lower-case-service-id: true routes: - id: nacos-conf #路由id, 唯一 uri: lb://nacos-conf # lb 表示从 nacos 中按照名称获取微服务,并遵循负载均衡的策略,nacos_config 对应微服务应用名 predicates: - Path=/** #使用断言
结果报错:
type=Service Unavailable, status=503。
把 uri 改为 http://localhost:8890 后就可以使用, 一番查询后才找到原因。 需要在 gateway 的 pom 内 添加:
<!--客户端负载均衡loadbalancer--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>
原因:
由于springcloud2020弃用了Ribbon,因此Alibaba在2021版本nacos中删除了Ribbon的jar包,因此无法通过lb路由到指定微服务,出现了503情况。
所以只需要引入springcloud loadbalancer包即可。
之前微服务之间用 template 来通过 服务名 进行调用的时候也出现过这个问题, 当时也是这样解决了, 但是这次遇到没有联想到这个问题。
参考:https://blog.csdn.net/little_stick_i/article/details/124844363