Summary of the issue: Each HA member node publishes a URL it's available at in 
the persisted state. For the Karaf build no value is set.
Available at: https://issues.apache.org/jira/browse/BROOKLYN-436

When fixing the issue I'm wondering whether we should stick to the existing 
behaviour for inferring the URL or change it a bit. TL;DR - should we use the 
public IP of the machines instead?

Current steps for building the URL are:
  * Get the hostname from "--publicAddress" command line option if set
  * Get the hostname from "--bindAddress" command line option if set and not 
"0.0.0.0"
  * Get the hostname of the local machine (can be overriden in config with 
"brooklyn.location.localhost.address" system property)
  * Combine the above with the port the web server is configured to run at (and 
the protocol)

The default behaviour from above is to set the URL to the local address of the 
machine.

There are a couple of common uses of the value:
  1) Clients using the REST API will use it to find what's the MASTER of the 
cluster by going to any member.
  2) Users going to a non-master web UI will be offered the option to be 
redirected to the MASTER

1) Could need either the public or the private IP, depending on where the HA 
members are relative to the client using them.
2) Most often need the public URL, but sometimes the local address might be 
preferred - for example when connecting by VPN to the member's network.

By public IP here I mean what IP the machine is visible to the world with. The 
machine might not have a public IP assigned at all, and be NATted to the 
internet instead.

Another use case could be to use the hostname from the URL to let the MASTER  
configure networking access for the standby servers.

Given the above I don't think a one size fits all solution is possible. I think 
we should keep the existing URL using the local address and provide a second 
value with the public URL as well. This will let clients pick the one (they 
think) is appropriate.

Svet.

Reply via email to