Spring Cloud Gateway 之请求坑位[微服务IP不一样请求会失败]

问题产生背景

在使用Spring Cloud Gateway过程当中,但愿配置多Routes映射不一样的微服务,由于Gateway 和Zuul的访问路径不一样(zuul 会带有服务service Id),形成错误。java

现象表现

file

问题定位

  1. 认为是配置Predicate问题。
routes:
        - id: after_route
          uri: lb://user-center
          predicates:
            # 当当前时间晚于设置时间以后,才能访问
            # 不然获得404错误
            #- After=2010-01-01T18:00:00.789-07:00[America/Denver]
            # 当Host属于**.geekplus.com.cn或**.life-runner.com时
            # http://localhost:9999/** -> user-center/**
            # eg. http://localhost:9999/users/1 -> user-center/users/1
            #- Host=**.geekplus.com.cn,**.life-runner.com
            - TimeBetween=上午6:00,下午11:00
            - Path=/users/**
          filters:
            - AddRequestHeader=CompanyKey,123456
            - AddResponseHeader=Success,Isaac
            - PreLog=CustomLogKey,CustomLogValue
        - id: content_route
          uri: lb://shared-center
            - After=2010-01-01T18:00:00.789-07:00[America/Denver]
            - Path=/share/**
          filters:
            - AddRequestHeader=CompanyKey,123456
            - AddResponseHeader=Success,Isaac
            - PreLog=CustomLogKey,CustomLogValue
  1. 认为是顺序问题
routes:
        - id: content_route
          uri: lb://shared-center
          predicates:
            - Path=/share/**
        - id: after_route
          uri: lb://user-center
          predicates:
            # 当当前时间晚于设置时间以后,才能访问
            - TimeBetween=上午6:00,下午11:00
            - Path=/users/**
          filters:
            - AddRequestHeader=CompanyKey,123456
            - AddResponseHeader=Success,Isaac
            - PreLog=CustomLogKey,CustomLogValue
  1. 觉得本身写错了。 > 四处寻求帮助,无奈,Gateway的资料网上真的不多。仍是自食其力吧,根据错误信息,查看Nacos中元数据,发现异常!

问题结论

  1. gateway 和 user-center 都进行太重启,由于重启后,服务Ip发生了变动,在服务注册中心这两个ip相同,所以能够访问。 2,shared-center 我长时间没有重启,注册在发现中心的ip 是老的Ip,和gateway/user-center的IP不一样,形成请求失败。 具体以下: shared-center: 172.16.33.167 user-center & gateway : 172.16.29.0

解决方法,重启shared-center,从新获取实例Ip,结果恢复正常!spring

Tips > 我使用的是Spring Cloud Alibaba Nacos做为服务发现中心,在重启内容服务以后,发现中心的失败IPservice并无被刷新,须要手动处理一下,不然依旧会调用到老的IP。

奔跑的人生 | 博客园 | segmentfault | spring4all | csdn | 掘金 | OSChina | 简书 | 头条 | 知乎 | 51CTOsegmentfault

相关文章
相关标签/搜索