【实战】gateway结合nacos报错503 Service Unavailable

文章目录

    • 场景
        • 版本
        • 配置
    • 问题
    • 原因
    • 解决方案
    • 验证
    • 其它

场景

版本

JDK 1.8
Spring Boot 2.6.0
Spring Cloud 2021.0.1
Spring Cloud Alibaba 2021.0.1.0

配置

gateway 开启动态路由 spring.cloud.gateway.discovery.locator.enabled: true

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        namespace: 9b02d316-10f4-40bc-b06b-32cd0e6b3732
        group: DEV_GROUP
        service: ${spring.application.name}
        password: nacos
        username: nacos
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      routes:
        - id: demo-service
          uri: lb://demo-service
          predicates:
            - Path=/demo-server/demo/test/gateway/yaml

问题

请求通过gateway代理的接口报错( “status”: 503,“error”: “Service Unavailable”)。
【实战】gateway结合nacos报错503 Service Unavailable_第1张图片

原因

  1. Spring Cloud 从2020版本开始弃用了Ribbon。
  2. Alibaba 在2020及之后版本的Nacos 中删除了Ribbon的jar包。
  3. 由于上述两个原因,无法通过lb路由到指定的微服务,导致出现503错误。

解决方案

Spring Cloud 2020版官方默认推荐使用Spring Cloud Loadbalancer正式替换Ribbon,并成为了Spring Cloud负载均衡器的唯一实现。

<dependency>
  <groupId>org.springframework.cloudgroupId>
  <artifactId>spring-cloud-starter-loadbalancerartifactId>
dependency>

验证

【实战】gateway结合nacos报错503 Service Unavailable_第2张图片

其它

公众号
【实战】gateway结合nacos报错503 Service Unavailable_第3张图片

你可能感兴趣的:(最佳实践,日常,gateway,spring,cloud)