Spring cloud Zuul can';在生产中找不到实例
我在Eureka注册了以下服务Spring cloud Zuul can';在生产中找不到实例,spring-cloud,netflix-zuul,spring-cloud-netflix,Spring Cloud,Netflix Zuul,Spring Cloud Netflix,我在Eureka注册了以下服务 边缘服务器是一个Zuul代理,配置如下: zuul: routes: contacts-service: path: /contacts/** stripPrefix: true serviceId: contacts-service ribbon: eureka: enabled: true eureka: client: serviceUrl: defaultZone:
边缘服务器是一个Zuul代理,配置如下:
zuul:
routes:
contacts-service:
path: /contacts/**
stripPrefix: true
serviceId: contacts-service
ribbon:
eureka:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: http://eureka:admin@127.0.0.1:8761/eureka/
instance:
preferIpAddress: true
---
spring:
profiles: docker
eureka:
client:
serviceUrl:
defaultZone: http://eureka:admin@discovery:8761/eureka/
在生产中,一切都是固定的(不知道这对这个问题是否重要)
当我试图通过zuul呼叫联系人服务时,我遇到了这个异常
{
"timestamp": 1477595822755,
"status": 500,
"error": "Internal Server Error",
"exception": "com.netflix.zuul.exception.ZuulException",
"message": "NUMBEROF_RETRIES_NEXTSERVER_EXCEEDED"
}
日志上说
10/27/2016 9:21:10 PM[2m2016-10-27 19:21:10.921[0;39m [33m WARN[0;39m [35m1[0;39m [2m---[0;39m [2m[nio-8080-exec-3][0;39m [36mo.s.c.n.z.filters.post.SendErrorFilter [0;39m [2m:[0;39m Error during filtering
10/27/2016 9:21:10 PM
10/27/2016 9:21:10 PMcom.netflix.zuul.exception.ZuulException: Forwarding error
10/27/2016 9:21:10 PM at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:164) ~[spring-cloud-netflix-core-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]
10/27/2016 9:21:10 PM at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
10/27/2016 9:21:10 PM at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
10/27/2016 9:21:10 PM at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_92-internal]
10/27/2016 9:21:10 PM at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_92-internal]
10/27/2016 9:21:10 PM at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
10/27/2016 9:21:10 PM at java.lang.Thread.run(Thread.java:745) [na:1.8.0_92-internal]
10/27/2016 9:21:10 PMCaused by: com.netflix.client.ClientException: Number of retries on next server exceeded max 1 retries, while making a call for: a0821971c1d0:contacts-service:72887579
10/27/2016 9:21:10 PM at com.netflix.loadbalancer.reactive.LoadBalancerCommand$4.call(LoadBalancerCommand.java:350) ~[ribbon-loadbalancer-2.2.0.jar!/:2.2.0]
10/27/2016 9:21:10 PM at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:133) ~[spring-cloud-netflix-core-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]
10/27/2016 9:21:10 PM ... 68 common frames omitted
10/27/2016 9:21:10 PMCaused by: java.net.UnknownHostException: a0821971c1d0
10/27/2016 9:21:10 PM at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[na:1.8.0_92-internal]
10/27/2016 9:21:10 PM at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_92-internal]
10/27/2016 9:21:10 PM at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_92-internal]
10/27/2016 9:21:10 PM at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287) ~[ribbon-loadbalancer-2.2.0.jar!/:2.2.0]
10/27/2016 9:21:10 PM at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:231) ~[rxjava-1.1.10.jar!/:1.1.10]
10/27/2016 9:21:10 PM ... 161 common frames omitted
10/27/2016 9:21:10 PM
如您所见,在日志中它显示了java.net.UnknownHostException:a0821971c1d0
。似乎Zuul无法解析Instance地址。如果需要,我可以发布更多信息。你使用云提供商吗?所有服务都是Docked o rancher,运行在digital Ocean上没有rancher的经验,但你应该从rancher env获得服务的ip,以设置eureka.instance.hostname
,可能是这样的:嗯,我会尝试,但我相信如果是这样的话,实例将无法找到或连接到Eurekai如果启用了执行器,您可以在/env
端点中查找并分配正确的环境变量,如下所示:eureka.instance.hostname:${HOST}
是否使用云提供商?所有服务都停靠在rancher上,这在digital Ocean上运行没有rancher的经验,但是您应该从rancher env获取服务的ip,以设置eureka.instance.hostname
,可能是这样的:嗯,我会尝试,但我相信如果是这样,实例将无法找到或连接到Eurekai如果启用了执行器,则可以在/env
端点中查找并分配正确的环境变量,如下所示:eureka.instance.hostname:${HOST}