Gateway 503 Service Unavailable

一、问题排查

  • 昨天升级了一下老项目的 SpringBoot 、SpringCloud版本。
    spring-boot-starter-parent 和 spring-boot 从 2.1.14.RELEASE 升级到2021年版本的最高版 2.6.8 版本。

    spring-cloud-starter-gateway 2.1.5.RELEASE 升级到了最新版的 spring-cloud-starter-gateway 3.1.3

  • 升级完后,发现网关 Gaterway 转发 503,如下图:
    网关503

  • 没升级之前是正常的,排除其他改动导致的问题。

  • 查看网关的配置,大概如下。点击每个配置项都能正常跳转,说明不是配置结构变动问题。

server:
  port: 88
spring:
  application:
    name: xxx-gateway
  cloud:
    gateway:
      routes:
        #        - id: qq_router
        #          uri: https://www.qq.com
        #          predicates:
        #            - Query=url,qq
        #
        #        - id: baidu_router
        #          uri: https://www.baidu.com
        #          predicates:
        #            - Query=url,baidu
        - id: product_router
          uri: lb:http://xxx-product
          predicates:
            # 路径断言:符合 /api/product/** 才放行
            - Path=/api/product/**
          filters:
            # 路径重写,将所有“/api”的请求替换为“/”,相当于去掉“api”
            - RewritePath=/api(?<segment>/?.*), /$\{segment}

        # 配置 Host 域名路由到 xxx-product 服务
        - id: xxx_product_route
          uri: lb:http://xxx-product
          predicates:
          	- Host=xxx.com

  • 发现配置项的 uri: lb:http:xxx.com 都用了 lb(负载均衡),难道是负载均衡不起作用?去掉lb:后发现能正常跳转了。果然…
  • 但是,我还是想加 lb负载均衡呀,然后查SpringBootC官方文档(),发现lb用法还在,猜测:lb用法在但是不起作用,那很有可能是负载均衡的实现内核发生了变动,比如:没有引入负载均衡依赖导致的。

lb 用法

二、解决:

  • 显式的引入spring-cloud-starter-loadbalancer 负载均衡依赖(Ribbon在高版本中已经被干掉)。
  • 不用指定版本,gateway 内部已经帮我们设置了版本。
    重新引入了 spring-cloud-starter-loadbalancer负载均衡依赖后,恢复lb 写法,测试,跳转正常。
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
<!--引入 loadbalancer 负载均衡依赖,替代 Ribbon-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

三、版本对比

低版本 依赖图
spring-cloud-gateway 3.1.3 依赖图

参考文档:

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值