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。

  • 相关阅读:
    单例模式
    工厂方法模式
    简单工厂模式
    LoadRunner11.0下载及安装链接~(By网络)
    lombok 介绍及基本使用方法
    360浏览器拦截弹窗,window.open方式打不开新页面
    js生成二维码
    Filter过滤器的写法
    JavaScript获取浏览器类型与版本
    如何截取date类型的年月日部分?
  • 原文地址:https://www.cnblogs.com/zhangpan1244/p/11592633.html
Copyright © 2011-2022 走看看