You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by Alex Heneveld <al...@cloudsoftcorp.com> on 2014/12/03 18:14:36 UTC
brooklyn advanced networking summary
All-
We've been discussing how to handle tracking addresses on private
subnets vs public addresses. This summarises current thinking.
In general, the usual sensors at an entity on a private network report
*private* subnet info. (If hostnames are transparent or there is no
penalty for accessing over public IP, using those values is a handy
shortcut, but of course that's not universally the case.)
Then for external access:
0) Brooklyn and other java code paths use BrooklynAccessUtils. This
ensures deployments act as normal (a) within a subnet (using the subnet
addresses), and (b) from Brooklyn; but without opening unnecessary
public ports.
TODO: BAU opens ports at Docker for Brooklyn as needed
If other entities outwith the subnet need access however, a bit more is
needed:
1) Another entity (e.g. SubnetTier, or the root, or an ad hoc entity)
reports contact information for that entity on another network (such as
public internet but not necessarily).
TODO: YAML support for setting up enrichers for creating forwarded
access and publishing forwarded sensors. For IP/hostname/port/URL
sensors, e.g. `root.url` at a root might pick up `root.url` from a load
balancer, and (as often there are multiple such entities) for pools, and
for "anycast" (e.g. Cassandra, where the port number cannot be changed,
so if there is only one public IP there can be only one forwarded entity)
2) Selected forwarded IP/hostname/port/URL sensors are published on the
entities themselves, with a different sensor name, e.g.
`mapped.http.port` (current) or (better?) `network.public.http.port` or
`network.net123.http.hostAndPort`. (Could use same TODO as #1.)
3) A sensor containing a special data type which is a map of network ID
and corresponding contact information could be used. Again, TODO with
YAML support for defining and enricher to publishing this and keep it up
to date.
We prefer 1 and 2, because 3 requires the client to parse the map and
understand network IDs. We want to make 1 and 2 as easy as possible to
set up (with a one-line "forward all ports and urls".)
Best
Alex
END