Thanks Chris.

Unfortunately, despite me arguing against it, I'm stuck with having to use the company load balancer.

Given that, Docker seems like overkill (especially in complexity and things to be understood by others).

Even if I did use DockerI'm still going to have to write the code to interact with the LB, which ought to be the biggest bit of it.

Jim


On 21/06/2016 17:44, Christopher Riley wrote:
Jim,

Consider using Docker / Kubernetes or similar solution. That will handle
the load balancer via a Kubernetes service which provides a static IP and
the ports / internal IPs are masked from the user. They can use the IP or
baked in DNS to then access the containers running spring-boot etc. Docker
just announced similar functionality as part of the core Docker solution.
If using a service in Kubernetes you just label your containers so the
service knows how to map the generated / healthy containers to the static
ip.

Chris

On Tue, Jun 21, 2016 at 12:40 PM, Jim Talbut <[email protected]> wrote:

Hi,

I have a bunch of services (too many) that I need to make self-registering.

At the moment most of these services are running as wars in tomcat, but
I'm going to be moving them to spring-boot (running as individual processes
using tomcat embedded).

Some of the services are SOAP, others are REST.

For each service I need to:

  * Run the service on an unpredictable port.
  * Identify the base URL for the service.
    I'll need a consistent way to go from this to the WSDL or the
    Swagger for the service.
    I'll also need a consistent way to go from this to the JMX endpoints
    for the JVM.
  * Identify the service name, the domain (essentially just metadata for
    the service) and the version for that service.
  * Record the service details in a registry (probably Consul, but it's
    not set in stone).
  * Configure a load balancer (JetNexus) to use this URL for this
    version of the service (creating the endpoint on the load balancer
    as necessary).

I know how to do all of this except for the first hurdle.
I can't use publishedEndpointUrl because the port is unpredictable (there
will be an unpredictable set of services running on any given box).

I can get the servlet mappings, the port from Spring boot, and the JAX-WS
(haven't tried JAX-RS) endpoint details, but am I going about this a bad
way?

What is the recommended way to derive the full URL for a service outside
of the context of a request?

Thanks

Jim





Reply via email to