在关键Web服务上,Spring cloud(Eureka / Ribbon)拒绝连接

时间:2017-02-08 16:48:59

标签: spring cloud spring-cloud netflix-eureka netflix-ribbon

我有一个Spring Cloud应用程序(Eureka,Ribbon,Zuul),可以在Spring Tools Suite中完美地运行。当我部署到Pivotal Web Services时,服务向Eureka注册(即,它们出现在Eureka控制台中),但当我尝试拨打另一个服务时,我得到Connection拒绝。当我尝试通过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。在我的代码的另一部分中,我使用非自动装配的RestTemplate。当我使用discoveryClient.getInstances(...)时,我会找回我的服务的IP地址和端口。如果我尝试直接调用那些IP地址/端口,我也会拒绝连接。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试以下建议:

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

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