NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find instance for ***“ 的解决办法

问题概述

关于这个问题,是在使用Spring Cloud的网关的时候遇见的,

微服务,多服务之间调用,报错:

 NotFoundException: 503 SERVICE_UNAVAILABLE "Unable to find instance for ***"

解决办法

关于这个问题,团队架构师排查了好一阵,

首先是检查lb路由地址无误:

server:
  port: 0000
spring:
  main:
    web-application-type: reactive
  application:
    name: app-name
  cloud:
    gateway:
      routes:
        - id: test-route01
          uri: https://***
          predicates:
            - Query=login,ec
        - id: test-route03
          uri: https://***
          predicates:
            - Query=login,yuque
        - id: admin_route
          uri: lb://***
          predicates:
            - Path=/api/**
          filters:
            - RewritePath=/api/?(?<segment>.*), /app-name/$\{segment}
    nacos:
      discovery:
        server-addr: ip:port
      config:
        import-check:
          enabled: false
      username: ***
      password: ***

确定无误后,再其继续下面,

继续排查过程:

  • 检查服务名称:确保 "server_name" 是正确的服务名称,没有拼写错误。
  • 服务注册状态:确认提供 "server_name" 服务的实例是否已经正确注册到服务发现系统中。
  • 网络问题:检查是否存在网络分区或防火墙设置导致无法访问服务实例。
  • 服务发现系统健康状况:检查服务发现系统(如 Consul, Eureka, Zookeeper 等)的健康状况和日志,以确定是否存在问题。
  • 重启服务:如果服务可能已经注册但无法被找到,尝试重启提供 "server_name" 服务的实例,并查看是否能够恢复。
  • 配置检查:确保服务发现的配置是正确的,包括任何相关的配置设置。
  • 服务网格配置:如果你使用的是服务网格(如 Istio),检查相关的配置和网格的健康状况。
  • 服务实例数量:确认是否应有多个 "server_name" 服务实例,如果是,确保它们都已注册并正常运行。
  • 如果以上步骤无法解决问题,可能需要更详细的系统和日志信息来进一步诊断问题。

最后,查询了官方文档,终于找到了答案,

如下图:

 

如上图,从官网得知,Spring Cloud 2020版本开始,弃用了Ribbon,开始以loadbalancer为代替组件,因此Spring Cloud Alibaba在2021版本nacos中删除了Ribbon的jar包,因此无法通过lb路由到指定微服务,出现了503情况。

需要通过显示配置loadbalancer依赖,解决lb路由问题。

        <!--客户端负载均衡loadbalancer-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>4.1.0</version>
        </dependency>

显示添加依赖后,查看Maven

验证gateway,服务lb负载均衡调用,即可顺利调用了!

参考文献:

Spring Cloud 2020.0.0-M1 Released

spring-cloud-github


好了,关于 NotFoundException: 503 SERVICE_UNAVAILABLE "Unable to find instance for ***" 的解决办法  就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者:华    仔
联系作者:who.seek.me@java98k.vip
来        源:优快云 (Chinese Software Developer Network)
原        文:https://blog.youkuaiyun.com/Hello_World_QWP/article/details/141029160
版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechBro华仔

日拱一卒无有尽,功不唐捐终入海

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值