dimanche 2 août 2015

How should I configure Spring Cloud with Netflix Zuul and Eureka in a Docker contained in an EC2 instance

I am evaluating building microservices using Spring Boot and Spring Cloud (Zuul and Eureka) running in separate docker containers, deployed in separate Amazon EC2 instances.

I have a simple REST service that registers with Eureka, and have configured Zuul to route requests to this service by looking it up in Eureka. enter image description here

I can get this to work running locally (i.e. not in Amazon/EC2) on my Mac using boot2docker, but when deployed on EC2, Zuul cannot find the service, and reports a 'Forwarding error' (status 500).

In EC2, everything is configured to run on port 80 (just while evaluating so I can easily access through our firewall). I can see both Zuul and my service in the Eureka system status page (although none of the links work!).

The clients are configured to find Eureka with a full AWS domain name, so I can see how they find Eureka OK. e.g.

  client:
    serviceUrl:
      defaultZone: http://ift.tt/1MGOWl8

But, the clients seem to be registering themselves with their internal docker IP address (based on the Eureka system status links).

enter image description here

The edgeserver link points to http://172.17.0.2/info The trialservice link points to http://172.17.0.3/info

I'm guessing this is incorrect and that other EC2 instances don't know to get to this address.

I've read this page http://ift.tt/1MGOYJP which suggests using AWS EC2 Elastic IP addresses, but I was hoping I wouldn't have to do this.

I've also seen there is a current discussion around this subject here, http://ift.tt/1fYtOJe

Has anyone managed to get this type of setup working, and if so, how did they configure the Eureka properties?




Aucun commentaire:

Enregistrer un commentaire