AWS Service registry for resilient mid-tier load balancing and failover.

Related tags

eureka
Overview

Eureka

Build Status

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.

At Netflix, Eureka is used for the following purposes apart from playing a critical part in mid-tier load balancing.

  • For aiding Netflix Asgard - an open source service which makes cloud deployments easier, in

    • Fast rollback of versions in case of problems avoiding the re-launch of 100's of instances which could take a long time.
    • In rolling pushes, for avoiding propagation of a new version to all instances in case of problems.
  • For our cassandra deployments to take instances out of traffic for maintenance.

  • For our memcached caching services to identify the list of nodes in the ring.

  • For carrying other additional application specific metadata about services for various other reasons.

Building

The build requires java8 because of some required libraries that are java8 (servo), but the source and target compatibility are still set to 1.7. Note that tags should be checked out to perform a build.

Support

Eureka Google Group

Documentation

Please see wiki for detailed documentation.

Issues
  • How to re register back to eureka server if heartbeat fail to send from spring-boot app.

    How to re register back to eureka server if heartbeat fail to send from spring-boot app.

    We are seeing an issue with one of our spring-boot cloud application, one of our instance failing to send heartbeat some how and eureka server removing this instance from registry. When the instance is trying to update the status with PUT /eureka/v2/apps/appname/instanceid?status=UP&lastDirtyTimestamp=1489548084184 we are seeing 404 http response because we don't have instance with eureka. And this instance is never trying register again. Is there any configuration I need to enable so that it will try to register again with eureka after some retries or errors with heartbeats?

    Here is stack-trace we are seeing when we are getting 404 response.

    com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class com.netflix.appinfo.InstanceInfo, and Java type class com.netflix.appinfo.InstanceInfo, and MIME media type text/html; charset=utf-8 was not found at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:630) ~[jersey-client-1.19.1.jar!/:1.19.1] at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:586) ~[jersey-client-1.19.1.jar!/:1.19.1] at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.sendHeartBeat(AbstractJerseyEurekaHttpClient.java:105) ~[eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118) ~[eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79) ~[eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:832) [eureka-client-1.4.9.jar!/:1.4.9] at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1396) [eureka-client-1.4.9.jar!/:1.4.9] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_121] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

    Please let me some pointers.

    Thanks in advance.

    question stale 
    opened by kosurusekhar 24
  • Eureka Java client heartbeat is failing intermittently

    Eureka Java client heartbeat is failing intermittently

    Getting this error :

    DiscoveryJerseyProvider   : Cannot parse request body
    
    com.fasterxml.jackson.databind.JsonMappingException: Root name 'timestamp' does not match expected ('instance') for type [simple type, class com.netflix.appinfo.InstanceInfo]
    

    and after that

    RedirectingEurekaHttpClient  : Request execution error
    
    javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
    

    Spring Boot: 1.4.1 Spring Cloud Netflix: 1.2.4.RELEAS Please help me resolve this error.

    opened by bsushant-athena 23
  • Client reports

    Client reports "HTTP 400 Bad Request/unable to send heartbeart!" even though heartbeat succeeds

    I have setup a eureka server and a handful of web services as eureka clients, all deployed as aws elastic beanstalk apps. Everything appears to be working correctly- the apps register with eureka and are visible on the system status page, and I can hit them via a zuul server that gets routing info from eureka.

    However, the clients are reporting that they are not able to send heartbeats, despite the fact that the server is receiving them just fine. The server lists the services as UP and the access log for the server shows that it is receiving the heartbeats and replying with a 200 status code.

    But the clients are are throwing 400/Bad Request exceptions:

    2019-03-08 15:38:11,884 [DiscoveryClient-HeartbeatExecutor-0] DEBUG c.n.d.s.t.j.AbstractJerseyEurekaHttpClient - Jersey HTTP PUT <eureka server host>/eureka/apps/HOOPLA-RECOMMENDATIONS/<hostname>:80:3aaeab0f-8899-4890-9323-584cf416aec2; statusCode=200
    2019-03-08 15:38:11,884 [DiscoveryClient-HeartbeatExecutor-0] ERROR c.n.d.s.t.d.RedirectingEurekaHttpClient - Request execution error. endpoint=DefaultEndpoint{ serviceUrl='<eureka server host>/eureka}
    javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
    	at com.netflix.discovery.provider.DiscoveryJerseyProvider.readFrom(DiscoveryJerseyProvider.java:110)
    	at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:634)
    	at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:586)
    	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.sendHeartBeat(AbstractJerseyEurekaHttpClient.java:105)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
    	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
    	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.sendHeartBeat(EurekaHttpClientDecorator.java:89)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
    	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:120)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
    	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
    	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
    	at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:846)
    	at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1405)
    	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:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: com.thoughtworks.xstream.io.StreamException: 
    	at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:115)
    	at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:84)
    	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1445)
    	at com.netflix.discovery.converters.wrappers.CodecWrappers$XStreamXml.decode(CodecWrappers.java:387)
    	at com.netflix.discovery.provider.DiscoveryJerseyProvider.readFrom(DiscoveryJerseyProvider.java:103)
    	... 23 common frames omitted
    Caused by: org.xml.sax.SAXParseException: Premature end of file.
    	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
    	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
    	at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:108)
    	... 27 common frames omitted
    2019-03-08 15:38:11,884 [DiscoveryClient-HeartbeatExecutor-0] WARN  c.n.d.s.t.d.RetryableEurekaHttpClient - Request execution failed with message: HTTP 400 Bad Request
    2019-03-08 15:38:11,884 [DiscoveryClient-HeartbeatExecutor-0] ERROR c.netflix.discovery.DiscoveryClient - DiscoveryClient_HOOPLA-RECOMMENDATIONS/<hostname>:80:3aaeab0f-8899-4890-9323-584cf416aec2 - was unable to send heartbeat!
    

    The client acknowledges the 200 response from the server, but then throws an error when trying to parse the response body. Stepping through the client code, it looks like the client is expecting an InstanceInfo object in the body of the response it gets from the server. But the heartbeat endpoint's response body is empty.

    The server and client are the same eureka version (1.9.3).

    Is this the expected behavior? Is this a bug, or could there be a problem with my configuration?

    opened by jbrew8 22
  • Eureka Client dependency update to Jersey 2.x

    Eureka Client dependency update to Jersey 2.x

    We have to add the spring-boot-starter-jersey to put Jersyey 2.14 on the classpath. The mix of both versions lead to strange NoSuchMethodErrors during application startup! The only solution seems to be to use JAX-RX 1.x (Jersey 1) . This is maybe related to https://github.com/Netflix/eureka/issues/376

    opened by cforce 21
  • Fix the inconsistency logic in method updateRenewalThreshold().

    Fix the inconsistency logic in method updateRenewalThreshold().

    Fix the inconsistency logic in method updateRenewalThreshold(). Because it does not reflect the expected intention based on the comment. updateRenewalThreshold will be qualified to run if renewal count * 2 is bigger than

    serverConfig.getRenewalPercentThreshold() * expectedNumberOfRenewsPerMin
    

    NOT

    serverConfig.getRenewalPercentThreshold() * numberOfRenewsPerMinThreshold
    
    opened by neoremind 20
  • Could not determine if the replica is available exception

    Could not determine if the replica is available exception

    Hi, I've noticed no active replicas on status page for eureka cluster consisting of 2 eureka servers. We use route53-based txt dns setup, both servers in different az. All running replicas in unavailable-replicas list, though logs contains replication activity.

    • What effect does it have for eureka cluster?
    • Can it cause situations when cluster losts overriden registry data when new servers added? Any help in finding reasons of such behaviour appreciated. Currently we use eureka 1.1.151 Exceptions when new server added to eureka cluster:
    Could not determine if the replica is available 
    ! java.lang.NullPointerException: null
    ! at com.netflix.eureka.resources.StatusResource.isReplicaAvailable(StatusResource.java:89)
    ! at com.netflix.eureka.resources.StatusResource.getStatusInfo(StatusResource.java:69)
    ! at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
    ! at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    ! at java.lang.reflect.Method.invoke(Method.java:497)
    ! at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:912)
    ! at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:107)
    ! at freemarker.core.MethodCall._eval(MethodCall.java:98)
    ! at freemarker.core.Expression.eval(Expression.java:111)
    ! at freemarker.core.Assignment.accept(Assignment.java:106)
    ! at freemarker.core.Environment.visit(Environment.java:265)
    ! at freemarker.core.MixedContent.accept(MixedContent.java:93)
    ! at freemarker.core.Environment.visit(Environment.java:265)
    ! at freemarker.core.Environment.process(Environment.java:243)
    ! at freemarker.template.Template.process(Template.java:277)
    ! at com.yammer.dropwizard.views.freemarker.FreemarkerViewRenderer.render(FreemarkerViewRenderer.java:56)
    ! at com.yammer.dropwizard.views.ViewMessageBodyWriter.writeTo(ViewMessageBodyWriter.java:74)
    ! at com.yammer.dropwizard.views.ViewMessageBodyWriter.writeTo(ViewMessageBodyWriter.java:22)
    ! at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)
    ! at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1479)
    ! at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
    ! at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
    ! at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    ! at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    ! at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    ! at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    ! at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
    ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
    ! at com.netflix.eureka.StatusFilter.doFilter(StatusFilter.java:68)
    ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
    ! at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:66)
    ! at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
    ! at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
    ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
    ! at com.yammer.dropwizard.servlets.ThreadNameFilter.doFilter(ThreadNameFilter.java:29)
    ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
    ! at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
    ! at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
    ! at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
    ! at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
    ! at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    ! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    ! at com.yammer.metrics.jetty.InstrumentedHandler.handle(InstrumentedHandler.java:200)
    ! at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
    ! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    ! at org.eclipse.jetty.server.Server.handle(Server.java:368)
    ! at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    ! at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
    ! at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
    ! at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
    ! at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
    ! at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    ! at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
    ! at org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
    ! at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    ! at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    ! at java.lang.Thread.run(Thread.java:745)
    
    opened by drax68 18
  • Support jersey2 for client/server

    Support jersey2 for client/server

    Initial support for jersey2 for #600

    Deployed these changes to our local snapshot repository. I've been running our builds with the snapshot for the last week. I believe the only non-passive change for existing jersey1 consumers is the relocation of DiscoveryClientOptionalArgs from an inner class of DiscoveryClient this was because the optional args has a method to supply additional filters which the interface was changed with jaxrs2.

    client

    Changed DiscoveryClient to accept a TransportClientFactories on the optional args class to support supplying the jersey2 transport client factory.

    Jersey2DiscoveryClientOptionalArgs args = new Jersey2DiscoveryClientOptionalArgs();
    args.setTransportClientFactories(Jersey2TransportClientFactories.getInstance());
    DiscoveryManager.getInstance().initComponent(new MyDataCenterInstanceConfig(), new DefaultEurekaClientConfig(), args);
    

    server

    Added EurekaServerContextBinder to use the hk2 injectors for EurekaServerContext. The GuiceFilter is no longer required to be on the filter chain. I did not create a eureka-server-jersey2 module since I am not deploying eureka-server as a war. Added Jersey2EurekaBootStrap which uses the client/server jersey2 classes for peer replication.

    // Expects that you have already initialized the discovery client
    new Jersey2EurekaBootStrap(DiscoveryManager.getInstance().getDiscoveryClient()
    
    opened by mattnelson 17
  • Cannot bootstrap eureka server

    Cannot bootstrap eureka server

    Getting the following issue when trying to start up eureka server:

    Dec 31, 2012 4:02:51 AM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class com.netflix.eureka.EurekaBootStrap java.lang.RuntimeException: Cannot bootstrap eureka server : at com.netflix.eureka.EurekaBootStrap.contextInitialized(EurekaBootStrap.java:120) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:968) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1646) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.ExceptionInInitializerError at com.netflix.eureka.EurekaBootStrap.contextInitialized(EurekaBootStrap.java:100) ... 14 more Caused by: java.lang.IllegalStateException: java.lang.NullPointerException at com.netflix.eureka.PeerAwareInstanceRegistry.setupPeerEurekaNodes(PeerAwareInstanceRegistry.java:197) at com.netflix.eureka.PeerAwareInstanceRegistry.init(PeerAwareInstanceRegistry.java:150) at com.netflix.eureka.PeerAwareInstanceRegistry.(PeerAwareInstanceRegistry.java:138) at com.netflix.eureka.PeerAwareInstanceRegistry.(PeerAwareInstanceRegistry.java:124) ... 15 more Caused by: java.lang.NullPointerException at com.netflix.logging.messaging.MessageBatcher.(MessageBatcher.java:136) at com.netflix.logging.messaging.BatcherFactory.createBatcher(BatcherFactory.java:70) at com.netflix.eureka.cluster.PeerEurekaNode.getBatcher(PeerEurekaNode.java:577) at com.netflix.eureka.cluster.PeerEurekaNode.(PeerEurekaNode.java:88) at com.netflix.eureka.PeerAwareInstanceRegistry.updatePeerEurekaNodes(PeerAwareInstanceRegistry.java:213) at com.netflix.eureka.PeerAwareInstanceRegistry.setupPeerEurekaNodes(PeerAwareInstanceRegistry.java:181) ... 18 more

    Full catalina.out: https://gist.github.com/4417295

    opened by ericdowd 16
  • Instantly start up if there are no peers to sync with

    Instantly start up if there are no peers to sync with

    Please feel free to reject this; it's as much an RFC on how to address #42 as anything else. Instead of introducing new settings for instant startup in development environments, I'm instead simply bypassing the wait part of the cycle if there are no peers to sync with. This might have negative implications in a production environment, but I'm struggling to come up with one; it only shows up if you launch Eurekas a second before you populate DNS or the like. I believe it ought to be safe.

    opened by bpollack 15
  • Support healthy status on server StatusInfo

    Support healthy status on server StatusInfo

    When one of the replicas is down the eureka server status should reflect that in the healthy flag on StatusInfo and /eureka/v2/status endpoint.

    opened by mattnelson 14
  •  remove  Response's Status magic var

    remove Response's Status magic var

    remove Response's Status magic var

    opened by Yangdaidai 0
  • How to change the DEFAULT_NUMBER_OF_RETRIES in com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient

    How to change the DEFAULT_NUMBER_OF_RETRIES in com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient

    Hi,

    We are using the eureka-client 1.9.13 version, the default value for the retry is 3, how can we change to a different number?

    We deployed 3 services in 2 zones which would require a retry > 3 for switching to another zone.

    Thanks,

    opened by dsjayakar 1
  • Whitesource vulnerabilities in eureka-client and eureka-server

    Whitesource vulnerabilities in eureka-client and eureka-server

    Hi,

    We are using eureka-client and eureka-server (version: 1.10.13) and we saw some vulnerabilities in your jars:

    log4j-1.2.16.jar jackson-dataformat-cbor-2.6.7.jar xstream-1.4.15.jar

    Do you know when those vulnerabilities will be fixed?

    Thanks and have a nice day,

    Amit.

    opened by AmitAmar 2
  • Ignore interfaces in eureka service

    Ignore interfaces in eureka service

    Is this a bug: No, just a question, possibly a new feature suggestion

    Problem: is there a way to ignore or exclude clients in my eureka server based on their ip address? or something like this?

    currently we have 100+ services up and running connecting to different eureka servers, and we would like to avoid registering client services if they are running locally, since we have a lot of services with a lot of people working with them removing their @EnableEurekaClient annotation every time we run it locally can be annoying, or any similar workaround.

    So I'm looking for a way to prevent services from getting registered in the eureka server by modifying my eureka server, not my clients,

    Thanks.

    Awaiting response 
    opened by Rex-Legor 1
  • How to resolve

    How to resolve "Nebula-release tasks will not be available"?

    I'm trying to download all direct dependencies (i.e., jars) of eureka. I custom a task in the build.gradle file located in the directory eureka.

    task copyJars(type:Copy) {
      from configurations.compile
      into 'jars'
    }
    

    I run it on Linux Mint, but it throws an error: image

    Any suggestion or advice is appreciated.

    opened by liuyuanOUC 0
  • Eureka AWS ECS issue

    Eureka AWS ECS issue

    I am running eureka on AWS ECS.

    eureka: datacenter: cloud client: registerWithEureka: false fetchRegistry: false instance: prefer-ip-address: true non-secure-port: 8761 instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}}

    Also have the EurekaInstanceConfigBean definedas below, but it does not seem to load and i always get the following message in the logs """"o.s.c.n.e.server.EurekaServerBootstrap : isAws returned false"""

    I am at my wits end with this.

    @Bean
    @Profile("!default")
    public EurekaInstanceConfigBean eurekaInstanceConfig(InetUtils inetUtils) {
        LOG.debug("************EUREKA CONFIG**********");
        EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils);
        AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
        info.getMetadata().put(AmazonInfo.MetaDataKey.publicHostname.getName(), info.get(AmazonInfo.MetaDataKey.publicIpv4));
        config.setHostname(info.get(AmazonInfo.MetaDataKey.publicHostname));
        config.setIpAddress(info.get(AmazonInfo.MetaDataKey.publicIpv4));
        config.setNonSecurePort(8761);
        config.setDataCenterInfo(info);
        return config;
    }
    
    opened by donaldfernandes 0
  • question about cache

    question about cache

    Why eureka was designed as three level caches? registry, ReadWriteMap and ReadOnlyMap? The instace info was stored in memory, it it fast enough, why need three level caches?

    opened by zhaokewugou 0
  • Eureka microservices getting deregistered automatically after getting registered with Eureka.

    Eureka microservices getting deregistered automatically after getting registered with Eureka.

    We have many micro services which will get registered in eureka. But our services are getting deregistered automatically after they get registered in eureka. please let me know what can be done to overcome this issue.

    these are my eureka-client & server properties client-properties

    after going live:

    renewalPercentThreshold=0.85 eureka.eurekaServer.domainName=${aesd.archaius.deployment.domain} eureka.eurekaServer.context=eureka/v2 eureka.healthCheckUrl=http://${archaius.deployment.serverPrivIP}:8080/eureka/healthcheck eureka.registration.enabled=true eureka.enableSelfPreservation=true

    server properties Set this only for this sample service without which starting the instance will by default wait for the default of 5 mins eureka.waitTimeInMsWhenSyncEmpty=0 eureka.disableDelta=false eureka.disableDeltaForRemoteRegions=true #Setup EIP timeouts eureka.eipBindRebindRetries=5 eureka.eipBindRebindRetryIntervalMs=120000 eureka.server.eviction-interval-timer-in-ms=12000 eureka.server.enableSelfPreservation=false enableSelfPreservation=false renewalPercentThreshold=0.85

    Logs where I found few on my eureka servers 2020-09-03 17:08:55,473 INFO com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver:43 [AsyncResolver-bootstrap-executor-0] [getClusterEndpoints] Resolving eureka endpoints via configuration 2020-09-03 17:09:09,418 INFO com.netflix.eureka.registry.AbstractInstanceRegistry$EvictionTask:1247 [Eureka-EvictionTimer] [run] Running the evict task with compensationTime 0ms 2020-09-03 17:09:09,418 INFO com.netflix.eureka.registry.AbstractInstanceRegistry:614 [Eureka-EvictionTimer] [evict] Evicting 1 items (expired=1, evictionLimit=44) 2020-09-03 17:09:09,418 WARN com.netflix.eureka.registry.AbstractInstanceRegistry:626 [Eureka-EvictionTimer] [evict] DS: Registry: expired lease for servciename/I-xxxxxxxxxxx 2020-09-03 17:09:09,418 INFO com.netflix.eureka.registry.AbstractInstanceRegistry:333 [Eureka-EvictionTimer] [internalCancel] Cancelled instance servicename/ixxxxxxxxxxxxxxx (replication=false) 2020-09-03 17:09:09,919 ERROR com.netflix.eureka.aws.EIPManager$EIPBindingTask:436 [Eureka-EIPBinder] [run] Could not bind to EIP java.lang.StringIndexOutOfBoundsException: String index out of range: -4

    opened by skone16 0
  • Compilation error with javax.xml.namespace after upgrading to Hoxton.SR5 and above (eureka-client-1.9.21)

    Compilation error with javax.xml.namespace after upgrading to Hoxton.SR5 and above (eureka-client-1.9.21)

    When using Spring cloud Hoxton.SR4, spring-cloud-netflix. 2.2.2.RELEASE is used : jettison then stax-api is provided with an runtime scope by eureka-client (1.9.17) image

    So my Spring Boot (2.2.8) application which uses Soap WebService (spring-boot-starter-web-services) with Java 11 compiles correctly and the import javax.xml.namespace.QName package is known.

    if i change to Hoxton.SR5 or higher, spring-cloud-netflix. 2.2.3.RELEASE is used : jettison then stax-api now comes with a compile scope by eureka-client (1.9.21) image

    So my application doesn't compile anymore and in STS I get this error in this import import javax.xml.namespace.QName;

    The javax.xml.namespace package can be accessed from more than one module: <unnamed>, java.xml

    eureka-client 1.9.21: the pom contains a compile scope for jettison: https://repo1.maven.org/maven2/com/netflix/eureka/eureka-client/1.9.21/eureka-client-1.9.21.pom

    eureka-client 1.9.17: the pom contains a runtime scope for jettison https://repo1.maven.org/maven2/com/netflix/eureka/eureka-client/1.9.17/eureka-client-1.9.17.pom

    opened by guerricm 1
Releases(v1.10.13)
Owner
Netflix, Inc.
Netflix Open Source Platform
Netflix, Inc.
AWS Service registry for resilient mid-tier load balancing and failover.

Eureka Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose

Netflix, Inc. 10.3k Mar 13, 2021
Lightweight framework for building java microservices

Ja-micro Ja-micro is a lightweight Java framework for building microservices. Introduction Ja-micro is a framework that allows developers to easily de

Sixt 629 Dec 25, 2020
Opinionated libraries for HTTP&JSON-based RPC using Retrofit, Feign, OkHttp as clients and Jetty/Jersey as servers

Conjure Java Runtime (formerly http-remoting) This repository provides an opinionated set of libraries for defining and creating RESTish/RPC servers a

Palantir Technologies 60 Mar 9, 2021
WSO2 Microservices Framework for Java (MSF4J)

Build status: WSO2 Microservices Framework for Java (MSF4J) WSO2 Microservices Framework for Java (MSF4J) is a lightweight high performance framework

WSO2 348 Dec 26, 2020
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 34.8k Mar 13, 2021
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

AOL 929 Mar 7, 2021
Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Bernd Ruecker 1000 Mar 18, 2021
Java client for Consul HTTP API

consul-api Java client for Consul HTTP API (http://consul.io) Supports all API endpoints (http://www.consul.io/docs/agent/http.html), all consistency

Ecwid 372 Feb 25, 2021
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)

Sentinel: The Sentinel of Your Microservices Introduction As distributed systems become increasingly popular, the reliability between services is beco

Alibaba 15.5k Mar 13, 2021
LINE 3k Mar 12, 2021
ColocationSim: Simulate Colocation Datacenter in a Fine Granularity with Microservices and Interference Modeling

ColocationSim Introduction 将在线作业和离线作业混合部署在同一集群(简称混部,Colocation)提升数据中心资源利用率的主流方法,如何在保证在线作业性能的前提下最大化集群的资源利用率成为混部相关研究中最主要问题。混部作业调度算法从集群层面解决这一问题,是学术界、企业界的

null 38 Mar 23, 2021
[JAVA] Projeto exemplo de uma arquitetura modular em Java

Arquitetura modular O objetivo do bom design de software, como já diria Robert C. Martin, em seu livro 'Clean Architecture: A Craftsman's Guide to Sof

HelpDEV 21 Apr 4, 2021