"Cannot execute request on any known server" when i set up a Eureka cluster by skyDns

3,586 views
Skip to first unread message

zhining fang

unread,
Apr 15, 2016, 11:55:21 PM4/15/16
to eureka_netflix
When i refer to "https://github.com/Netflix/eureka/wiki/Configuring-Eureka-in-AWS-Cloud", i want to set up a Eureka cluster by skyDns.

this is all the configuration of my eureka-client :


# Region where the application is deployed.
# - for AWS specify one of the AWS regions
# - for other datacenters specify a arbitrary string indicating the region.
#   This is normally specified as a -D option (eg) -Deureka.region=us-east-1
eureka.region=us-east-1

# Name of the application to be identified by other services (in this case, it is the eureka service itself)

# Virtual host name by which the clients identifies this service (in this case, it is the eureka service itself)
#eureka.vipAddress=eureka.mydomain.net

# The port where the service will be identified and will be serving requests
eureka.port=8080
# Set to false as this config is for the eureka client in the eureka server itself.
# The eureka clients running in eureka server needs to connect to servers in other zones.
#
# For other applications this should not be set (default to true) for better zone based load balancing.
#eureka.preferSameZone=false

## ------------------------------------------------------------------------------
## The below properties govern how clients should connect to eureka servers.
## In general these can be the same for all clients in the same eureka ecosystem.
## ------------------------------------------------------------------------------

# Change this if you want to use a DNS based lookup for determining other eureka servers (see example below)
eureka.shouldUseDns=true

# Since shouldUseDns is false, we use the following properties to explicitly specify the route to the eureka servers
eureka.serviceUrl.default=http://localhost:8080/eureka/v2/

# for the eureka server's own client config, set on-demand update to false as it may be too quick for the REST
# resource initialization
eureka.shouldOnDemandUpdateStatusChange=false
eureka.eurekaServer.domainName=bar.skydns.paas
eureka.eurekaServer.context=eureka/v2
eureka.eurekaServer.port=8080


In my skydns, i set TXT records,
the result are follows:

command:     dig txt.us-east-1.bar.skydns.paas txt
result:
                    ;; QUESTION SECTION:
                    ;txt.us-east-1.bar.skydns.paas. IN TXT

                    ;; ANSWER SECTION:
                    txt.us-east-1.bar.skydns.paas. 3600 IN TXT "us-east-1c.bar.skydns.paas"
                    txt.us-east-1.bar.skydns.paas. 3600 IN TXT "us-east-1d.bar.skydns.paas"


command:     dig txt.us-east-1c.bar.skydns.paas txt
result:           
                   ;; QUESTION SECTION:
                   ;t.us-east-1c.bar.skydns.paas. IN TXT

                   ;; ANSWER SECTION:
                   txt.us-east-1c.bar.skydns.paas. 3600 IN TXT "http://10.120.180.235:8080/discovery/v2/"

i can get the response  of  "dig txt.us-east-1d.bar.skydns.paas txt" too.  the answer is :  txt.us-east-1d.bar.skydns.paas. 3600 IN TXT "http://10.120.180.117:8080/discovery/v2/"


At last,when i startup the tomcat, there are some problems :

2016-04-16 11:43:36,565 ERROR com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient:83 [localhost-startStop-1] [execute] Request execution error
com.sun.jersey.api.client.ClientHandlerException: java.net.UnknownHostException: http: unknown error
        at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)
        at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123)
        at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27)
        at com.sun.jersey.api.client.Client.handle(Client.java:652)
        at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
        at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
        at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509)
        at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194)
        at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplications(AbstractJerseyEurekaHttpClient.java:165)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)
        at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)
        at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118)
        at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)
        at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)
        at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
        at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1013)
        at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:927)
        at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:441)
        at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:304)
        at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:300)
        at com.netflix.eureka.EurekaBootStrap.initEurekaServerContext(EurekaBootStrap.java:147)
        at com.netflix.eureka.EurekaBootStrap.contextInitialized(EurekaBootStrap.java:96)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: http: unknown error
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
        at java.net.InetAddress.getAllByName(InetAddress.java:1192)
        at java.net.InetAddress.getAllByName(InetAddress.java:1126)
        at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:44)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:259)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:159)
        at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
        at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
        at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
        at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:115)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
        at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173)
        ... 41 more

2016-04-16 11:43:36,578 WARN  com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient:129 [localhost-startStop-1] [execute] Request execution failure
2016-04-16 11:43:36,580 ERROR com.netflix.discovery.DiscoveryClient:934 [localhost-startStop-1] [fetchRegistry] DiscoveryClient_EUREKA/SZV1000048497 - was unable to refresh its cache! status = Cannot execute request on any known server
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
        at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)
        at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
        at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1013)
        at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:927)
        at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:441)
        at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:304)
        at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:300)
        at com.netflix.eureka.EurekaBootStrap.initEurekaServerContext(EurekaBootStrap.java:147)
        at com.netflix.eureka.EurekaBootStrap.contextInitialized(EurekaBootStrap.java:96)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
2016-04-16 11:45:46,609 WARN  com.netflix.discovery.InstanceInfoReplicator:107 [DiscoveryClient-InstanceInfoReplicator-0] [run] There was a problem with the instance info replicator
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59)
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56)
at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:806)
at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:103)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)



These are the responses:
Instances currently registered with Eureka
Application
AMIs
Availability Zones
Status
ApplicationAMIsAvailability ZonesStatus
No data available in table
General Info
NameValue
environmenttest
num-of-cpus4
total-avail-memory553mb
current-memory-usage234mb (42%)
server-uptime00:03
registered-replicashttp://http://10.120.180.235:8080/discovery/v2/:8080/eureka/v2/
available-replicas
unavailable-replicashttp://http://10.120.180.235:8080/discovery/v2/:8080/eureka/v2/,
Instance Info
NameValue
ipAddr10.120.180.235
statusUP



Instances currently registered with Eureka
Application
AMIs
Availability Zones
Status
ApplicationAMIsAvailability ZonesStatus
No data available in table
General Info
NameValue
environmenttest
num-of-cpus4
total-avail-memory562mb
current-memory-usage251mb (44%)
server-uptime00:27
registered-replicashttp://http://10.120.180.235:8080/discovery/v2/:8080/eureka/v2/
available-replicas
unavailable-replicashttp://http://10.120.180.235:8080/discovery/v2/:8080/eureka/v2/,
Instance Info
NameValue
ipAddr10.120.180.117
statusUP


The application of eureka is missing and when i register to 10.120.180.117 with a application named Hello ,i cant't find the Hello  in the both eureka servers.



Do i make some mistakes in the  configuration of eureka-client  or some others ?



























Reply all
Reply to author
Forward
0 new messages