zoukankan      html  css  js  c++  java
  • Spring Cloud Gateway 之请求坑位[微服务IP不同请求会失败]

    问题产生背景

    在使用Spring Cloud Gateway过程中,希望配置多Routes映射不同的微服务,因为Gateway 和Zuul的访问路径不同(zuul 会带有服务service Id),造成错误。

    现象表现

    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,结果恢复正常!

    Tips

    我使用的是Spring Cloud Alibaba Nacos作为服务发现中心,在重启内容服务之后,发现中心的失败IPservice并没有被刷新,需要手动处理一下,否则依旧会调用到老的IP。

  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/zhangpan1244/p/11592633.html
Copyright © 2011-2022 走看看