我有一个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地址/端口,我也会拒绝连接。
有什么想法吗?
答案 0 :(得分:1)
找到我自己的答案 - 在PWS中,必须启用CF网络。然后需要应用规则让服务直接相互通信。
https://docs.cloudfoundry.org/adminguide/container-networking.html
答案 1 :(得分:0)
尝试以下建议:
重新启动运行Zuul的实例,看看是否能解决问题
尝试监控/ metrics中的counter.servo.discoveryclient *值