Bladex 部署公共服务后,线上的服务会调用本地的服务

Blade 未结 2 1056
是大白呀
是大白呀 剑圣 2021-04-19 21:50
悬赏:10

一、该问题的重现步骤是什么?

1.  docker线上部署了一些共用的服务,比如nacos、System、User、resource...,并将这些服务的的ip映射成公网ip,端口也开放了,测试不启动本地服务线上是可以正常使用的。注册到nacos也是公网ip,本地启动saber,访问线上的网关也没问题。

2. 本地启动了gateway、system、user这三个服务,然后线上的就无法登陆。本地关掉这三个服务线上又一切正常,问题应该是线上的调用了本地的这三个服务导致的问题,然后调用不到导致的问题。但是docker部署的网关应该是test环境,而线上的gateway并没有使用到gateway-dev.yaml的配置文件,也没有加gateway-test.yaml的配置文件,没有配置rabbion优先调用本地的ip,为什么会调用到本地的服务,而不是调用线上的服务呢?(是否我的使用或者理解有问题?)

3. 本地的gateway已经配置了优先调用的ip段。


二、你期待的结果是什么?实际看到的又是什么?

线上的gateway调用的是线上的服务。

本地的gateway启动,使用本地的saber连接本地的gateway,在启动system、user这些服务,优先调用的应该是本地有启动的服务。如果没启动的应用则调用线上的。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

2.8.0 商业版

四、请提供详细的错误堆栈信息,这很重要。

不知道是我想的不正确还是说使用不当导致这样的问题还是说别的配置问题。

五、若有更多详细信息,请在下面提供。

2条回答
  • 调试一下这段逻辑看看

    LRS5HUL2VU8RGEZMPI6__80.png

    0 讨论(0)
  • 2021-04-20 19:53

    看描述,你本地和线上服务是共用一个nacos么?如果是的话,那线上的gateway调用的时候就会负载到本地的服务,而本地服务注册到nacos的时候是局域网ip,服务器自然就无法调用了。

    想解决这种情况,可以线上指定一个namespace,开发环境也指定一个namespace,这样就不会冲突了

    0 讨论(0)
提交回复