Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pivotal web服务上spring云(Eureka/Ribbon)的连接被拒绝_Spring_Cloud_Spring Cloud_Netflix Eureka_Netflix Ribbon - Fatal编程技术网

pivotal web服务上spring云(Eureka/Ribbon)的连接被拒绝

pivotal web服务上spring云(Eureka/Ribbon)的连接被拒绝,spring,cloud,spring-cloud,netflix-eureka,netflix-ribbon,Spring,Cloud,Spring Cloud,Netflix Eureka,Netflix Ribbon,我有一个Spring云应用程序(Eureka、Ribbon、Zuul),它在Spring工具套件中本地运行得非常好。当我部署到Pivotal Web服务时,这些服务会向Eureka注册(即,它们会显示在Eureka控制台中),但当我试图让一个服务调用另一个服务时,连接被拒绝。当我尝试通过Zuul时,我得到了转发错误,随后连接被拒绝 我尝试了以下各种组合,但似乎没有任何帮助 eureka: client: serviceUrl: defaultZone: http://myeureka

我有一个Spring云应用程序(Eureka、Ribbon、Zuul),它在Spring工具套件中本地运行得非常好。当我部署到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
对于服务到服务调用,我使用Autowired RestTemplate。在代码的另一部分中,我使用了非自动连接的RestTemplate。当我将它与discoveryClient.getInstances(…)一起使用时,我会返回我的服务的ip地址和端口。如果我试图直接调用这些IP地址/端口,我也会被拒绝连接

有什么想法吗?

试试这些建议:

  • 重新启动运行Zuul的实例,看看这是否解决了问题

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


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


    您得到的确切异常是什么?当我通过Zuul调用时,我得到com.netflix.Zuul.exception.zuuleexception:转发错误。后跟-org.apache.http.conn.HttpHostConnectException:连接到10.241.130.173:80[/10.241.130.173]失败:连接被拒绝。当我在没有Zuul的情况下执行时(即,直接调用调用另一个服务的服务),连接被拒绝。我已经多次重新启动Zuul和所有其他组件。以下是我认为您所指的/metrics中的值。这来自使用discoveryClient的服务:“counter.servo.discoveryClient-httpclient_delete”:5734 5821 5833 5841“counter.servo.discoveryClient_reconciehHashCodeMismatch”:0“counter.servo.discoveryClient-httpclient_请求”:5874 5962 5974 5982“counter.servo.discoveryClient-httpclient_createnew”:5736 5823 5835 5843“计数器。伺服。发现客户端-httpclient_重用”:138 139“计数器。伺服。发现客户端-httpclient_释放”:5874 5962 5974 5982“计数器。伺服。发现客户端_重新注册“:0每个计数器值用于后续运行。例如,位于顶部的第一次运行是5734,第二次运行5821,第三次运行5833,等等。刚刚将eureka.instance.preferIpAddress更改为false。现在,它找到了服务,但试图通过实例ID调用它——该值显示在Eureka控制台中。它正在上进行查找。因此,它正在找到正确的服务,但无法通过实例ID调用它。我得到:java.net.UnknownHostException:f6795e60-5d38-4903-4a0b-82859baa1c90刚刚将eureka.instance.preferIpAddress更改回true。它似乎为我的服务找到了正确的内部IP 10.241.80.169:8080。下面是一些日志:Servlet.service()用于路径[]抛出异常的上下文中的Servlet[dispatcherServlet][请求处理失败;嵌套异常为org.springframework.web.client.ResourceAccessException:POST请求时发生I/O错误..myServiceName…连接被拒绝;嵌套异常为java.net.ConnectException:Connection Refued使用
    cf add network policy
    启用容器到容器的网络后,您将不需要设置
    preferIpAddress:true
    属性。当您不想使用容器到容器网络时,需要另外两个属性。使用它们,您告诉应用程序使用外部URL向Eureka注册,以便连接通过PWS反向代理。