2

我有一个在 Spring Tools Suite 本地完美运行的 Spring Cloud 应用程序(Eureka、Ribbon、Zuul)。当我部署到 Pivotal Web 服务时,这些服务会在 Eureka 中注册(即,它们显示在 Eureka 控制台中),但是当我尝试让一个服务调用另一个服务时,我得到 Connection denied。当我尝试通过 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

对于服务调用,我使用 Autowired RestTemplate。在我的代码的另一部分中,我使用了非 Autowired RestTemplate。当我将它与 discoveryClient.getInstances(...) 一起使用时,我确实取回了我的服务的 IP 地址和端口。如果我尝试直接调用这些 IP 地址/端口,我也会收到 Connection Refused。

有任何想法吗?

4

2 回答 2

2

找到我自己的答案 - 在 PWS 中,必须启用 CF Networking。然后需要应用规则让服务之间直接对话。

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

于 2017-02-24T17:57:15.713 回答
0

试试这些建议:

  1. 重启运行Zuul的实例,看看是否能解决问题

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

于 2017-02-08T18:42:31.947 回答