关键 Web 服务上的弹簧云(尤里卡/功能区)的连接被拒绝



我有一个Spring Cloud应用程序(Eureka,Ribbon,Zuul(,它可以在Spring Tools Suite中完美运行。 当我部署到 Pivotal Web 服务时,服务会向 Eureka 注册(即,它们显示在 Eureka 控制台中(,但是当我尝试让一个服务调用另一个服务时,我收到连接被拒绝。 当我尝试通过 Zuul 时,我收到转发错误,然后是连接被拒绝。

我已经尝试了以下各种组合,但似乎没有任何帮助。

eureka:
 client:
  serviceUrl:
   defaultZone: http://myeurekaserver.cfapps.io/eureka/
 instance:
    preferIpAddress: true
#   hostname: ${CF_INSTANCE_IP:localhost}
#   nonSecurePort: ${CF_INSTANCE_PORT:${PORT:${server.port:8002}}}
    hostname: ${vcap.application.uris[0]}
    nonSecurePort: 80

对于服务到服务调用,我使用自动连线的 RestTemplate。在我的代码的另一部分,我使用非自动连线的 RestTemplate。当我将其与discoveryClient.getInstances(...(一起使用时我确实取回了服务的 IP 地址和端口。 如果我尝试直接调用这些 IP 地址/端口,我也会收到连接被拒绝。

有什么想法吗?

找到了我自己的答案 - 在 PWS 中,必须启用 CF 网络。 然后需要应用规则,让服务直接相互通信。

https://docs.cloudfoundry.org/adminguide/container-networking.html

尝试以下建议:

  1. 重新启动运行 Zuul 的实例,看看是否可以解决问题

  2. 尝试监视/metrics 中的 counter.servo.discoveryclient* 值

最新更新