SeeUUU
倒过来念的是猪
2021-06-02 23:11
采纳率: 100%
浏览 332

nacos + gateway 在配置 lb://服务名,时无效报503,求各位大佬帮帮忙。。。

<springboot.version>2.2.9.RELEASE</springboot.version>
<springcloud.version>Hoxton.SR8</springcloud.version>
<springcloud-alibaba.version>2.2.1.RELEASE</springcloud-alibaba.version>

bootstrap.yml

spring:
  application:
    name: mall-gateway
  cloud:
    nacos:
      config:
        # 配置中心地址
        # server-addr: http://***********:8848
        # 配置nginx地址
        server-addr: http://xxxxxxxxxx:1122
        # 指定yaml格式的配置
        file-extension: yaml
        # config分组
        group: dev
        # config命名空间
        namespace: 8067255f-1a91-4cd3-be6c-c132a4c2d5a6
        # 加载config中的其它配置
        extension-configs[0]:
          data-id: application-gateway.yml
          group: dev
          refresh: true
        extension-configs[1]:
          data-id: gateway-router.yml
          group: dev
          refresh: true

 application-gateway.yml

server:
  port: 88

spring:
  cloud:
    nacos:
      discovery:  #  启动类加 @EnableDiscoveryClient  开启服务的注册与发现
        # 配置Nacos地址
        # server-addr: http://**********:8848/
        # 配置nginx地址
        server-addr: http://xxxxxxxxxx:1122/
        # 服务分组
        group: dev
        # 服务命名空间
        namespace: 8067255f-1a91-4cd3-be6c-c132a4c2d5a6


# 配置这一项可以监控gateway各个节点的信息
management:
  endpoints:
    web:
      exposure:
        include: "*"

gateway-router.yml

spring:
  cloud:
    gateway:
      discovery:
        locator:
          # 开启从注册中心动态创建路由的功能,利用微服务名进行路由
          enabled: true
          lowerCaseServiceId: true
      # 添加路由配置
      routes:
        # 使用lb 就有问题
        - id: admin_route
          uri: lb://mall-admin
          predicates:
            - Path=/api/**
          filters:
            - RewritePath=/api/(?<segment>.*), /mall-admin/$\{segment}
        
        # 这样配置是没问题的
        - id: admin_test
          uri: http://localhost:8080
          predicates:
            - Path=/test/**
          filters:
            - RewritePath=/test/(?<segment>.*), /mall-admin/$\{segment}

请问为什么只要使用  uri: lb://服务名   这种就没有用,报503 。使用 ri: http://localhost:8080    这样就可以。

项目github地址:git@github.com:suiweidong/mall.git

麻烦各位大佬了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • SeeUUU
    倒过来念的是猪 2021-06-03 11:49
    已采纳

    已经找到问题所在了,问题不是出现在代码上,是出现在nacos的配置上。

    原来是给每一个服务配置了一个命名空间,然后对应服务的配置,放在对应的命名空间中,这样看着很简洁干净,这样其实也是没问题的。

    问题出现在注册服务的时候,我把每一个服务放在它们对应的命名空间中了,如图:

    spring:
      cloud:
        nacos:
          discovery:  #  启动类加 @EnableDiscoveryClient  开启服务的注册与发现
            # 配置Nacos地址
            # server-addr: http://**********:8848/
            # 配置nginx地址
            server-addr: http://xxxxxxxxxx:1122/
            # 服务分组
            group: dev
            # 服务命名空间
            namespace: 8067255f-1a91-4cd3-be6c-c132a4c2d5a6

    nacos不支持不同命名空间之间的调用,导致我在gateway服务中,lb://admin  获取不到admin服务,结果报了503。

    改进后就没问题了

    我使用命名空间做环境隔离,使用group 做应用隔离

    对应的服务注册的命名空间都改成 dev对应的命名空间,去掉group ,这样所有的服务注册都会在dev命名空间下,互相调用就是可以调通的

    spring:
      cloud:
        nacos:
          discovery:  #  启动类加 @EnableDiscoveryClient  开启服务的注册与发现
            # 配置Nacos地址
            # server-addr: http://**********:8848/
            # 配置nginx地址
            server-addr: http://xxxxxxxxxx:1122/
            # 服务命名空间
            namespace: 50b719ee-29c4-41d5-8139-962971609d5b

    每个项目中的bootstrap.yml 也要对应改一下

    spring:
      cloud:
        nacos:
          config:
            # 配置中心地址
            # server-addr: http://*********:8848
            # 配置nginx地址
            server-addr: http://xxxxxxxxxxx:1122
            # 指定yaml格式的配置
            file-extension: yaml
            # config分组
            group: gateway
            # config命名空间
            namespace: 50b719ee-29c4-41d5-8139-962971609d5b
            # 加载config中的其它配置
            extension-configs[0]:
              data-id: application-gateway.yml
              group: gateway
              refresh: true
            extension-configs[1]:
              data-id: gateway-router.yml
              group: gateway
              refresh: true

    这个问题纠结了我2天。。。自己水平不足,不过这种学习过程,还是很快乐的。

    点赞 1 评论

相关推荐