Eureka Server: How to achieve high availability

Neo picture Neo · Jul 24, 2016 · Viewed 23.5k times · Source

I'm new to spring cloud. I've read this doc and it says the client application must specify a service url:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

But what if localhost:8761 goes down?

Answer

Gurneet Sethi picture Gurneet Sethi · Jul 24, 2016

Eureka Discovery Server should be used in the Peer-Aware config mode in production setups. Check: http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_peer_awareness

For instance your first eureka server instance will have config like this:

server:
   port: 1111
eureka:
   instance:
      hostname: peer1
   client:
      serviceUrl:
           defaultZone: http://peer2:1112/eureka/

..and second server instance like this:

server:
   port: 1112
eureka:
   instance:
      hostname: peer2
   client:
      serviceUrl:
           defaultZone: http://peer1:1111/eureka/

When Eureka server instances will boot up they will look for each other. All microservices will register with them automatically, so if one goes down the other server instance will be always there. On both Eureka instances you will be able to see all the registered microservices. Like this you can scale-up and have multiple server instances in a production environment.

Note: If you are trying this on a single system, dont forget to edit the /etc/hosts file:
127.0.0.1 peer1
127.0.0.1 peer2