Approach 1: Native Eureka Library
The first way is to simply use the archive file generated by the Netflix Eureka build process:1. Clone the Eureka source repository here: https://github.com/Netflix/eureka
2. Run "./gradlew build" at the root of the repository, this should build cleanly generating a war file in eureka-server/build/libs folder
3. Grab this file, rename it to "eureka.war" and place it in the webapps folder of either tomcat or jetty. For this exercise I have used jetty.
4. Start jetty, by default jetty will boot up at port 8080, however I wanted to instead bring it up at port 8761, so you can start it up this way, "java -jar start.jar -Djetty.port=8761"
The server should start up cleanly and can be verified at this endpoint - "http://localhost:8761/eureka/v2/apps"
Approach 2: Spring-Cloud-Netflix
Spring-Cloud-Netflix provides a very neat way to bootstrap Eureka. To bring up Eureka server using Spring-Cloud-Netflix the approach that I followed was to clone the sample Eureka server application available here: https://github.com/spring-cloud-samples/eureka
1. Clone this repository
2. From the root of the repository run "mvn spring-boot:run", and that is it!.
The server should boot up cleanly and the REST endpoint should come up here: "http://localhost:8761/eureka/apps". As a bonus, Spring-Cloud-Netflix provides a neat UI showing the various applications who have registered with Eureka at the root of the webapp at "http://localhost:8761/".
Just a few small issues to be aware of, note that the context url's are a little different in the two cases "eureka/v2/apps" vs "eureka/apps", this can be adjusted on the configurations of the services which register with Eureka.
Conclusion
Your mileage with these approaches may vary. I have found Spring-Cloud-Netflix a little unstable at times but it has mostly worked out well for me. The documentation at the Spring-Cloud site is also far more exhaustive than the one provided at the Netflix Eureka site.
Hi,
ReplyDeleteI've tried and failed the first approach. I keep getting the error:
2016-12-02 15:27:37,059 WARN com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient:129 [localhost-startStop-1] [execute] Request execution failed with message: java.net.SocketTimeou
tException: Read timed out
2016-12-02 15:27:37,063 ERROR com.netflix.discovery.DiscoveryClient:934 [localhost-startStop-1] [fetchRegistry] DiscoveryClient_EUREKA/XXXXXXXX - was unable to refresh its cache! status = Cannot execu
te request on any known server
Thanks,
Teena
Hi,
Deletehave u solved this issue? same occurs for me too.