pnoltes opened a new issue, #719:
URL: https://github.com/apache/celix/issues/719
# Intro
With the current RSA implementation, Remote Service Admins can bound to
multiple network interfaces (bind 0.0.0.0), but there is not clear defined way
to ensure that discovery can work with endpoints that describe an exposed
endpoint on multiple network interface and thus exposed with multiple IPs.
# Improvements
a) Let RSA implementations decide if they support "dynamic IP fill-in" by
providing a additional service property on the registered RSA service. if
dynamic IP fill-in is supported, the RSA implementation should bind to ANY
address (0.0.0.0)
b) The Topology Manager should handle RSA without "dynamic IP fill-in" as-is
c) And the Topology Manager should select which network interfaces are used
for exported endpoint exposure.
This can based on configuration (config properties) or on dynamic lookup. IP
addresses that are
not part of the selected interface should be ignore so that no
communication is possible on not-selected IP addresses.
d) Update the Topology Manager to detect RSA services what support dynamic
IP fill-in and in that case create multiple endpoints for a single export
registration based on the available network interfaces and an optional network
selection configuration. These endpoints are then forwarded to the discovery
listener services that support network specific endpoints. The discovery
implementation can pick and handle or drop endpoints based on the selected
network interface.
The primary idea is that most of the boiler-plating to support dynamic IP
fill-in is moved to the topology manager and kept away from the RSA and
discovery implementations.
For the service/endpoint property something like the following can be used:
- RSA Dynamic IP fill-in support
- Property name: "rsa.dynamic.ip.support"
- Type: boolean
- Description: Indicates whether the RSA implementation supports dynamic
IP address fill-in for service exports
- RSA Export Registration dynamic replaceable property
- Property name: rsa.ifnames
- Type: string array (depends on #674
- Description: The dynamically determined IP address for the endpoint.
- Discovery interface-specific endpoints support.
- Property Name: "discovery.interface.specific.endpoints.support
- Type: boolean
- Description: Indicates if the discovery implementation supports handling
of interface-specific endpoints.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]