[Apiman-user] Apiman & Loadbalancer F5 !

Eric Wittmann eric.wittmann at redhat.com
Tue Jan 19 09:47:45 EST 2016


Hi Charles.  I'm not 100% certain I understand all aspects of your 
question - perhaps a diagram would help me, in case my answer doesn't 
make sense (and if you have the time).  :)

You are right that there is no 1..N mapping of an apiman service/api to 
a back-end endpoint URL.  That is a feature we are contemplating for the 
future but it's certainly not available yet.

Here are some thoughts that might be useful/relevant to this use case. 
First is that you could of course implement a custom policy that changed 
the back-end endpoint URL based on whatever criteria you see fit.  The 
custom policy would simply have to change the value of the 
ApiRequest->Api:endpoint field.  Doing that should be considered unsafe 
and a temporary workaround, as the Api object is globally scoped, and 
really should be either cloned (if we want to suppor this use-case) or 
immutable (if we don't).

Another thing to note is that as of 1.2.0.Final we support system 
property and environment variable replacements in the API endpoint, 
endpoint properties, and all policy configurations.  This means that you 
could install *identical* gateways on all the per fuse server, 
configured using the same shared registry.  Then, when you configure the 
Service/API endpoint, you could set the value to something like:

${external_url}

Then you could set a system property, which could be different for each 
gateway node, like so:

(on gateway server 1)
-Dexternal_url=http://fuse_server_1:port/

(on gateway server 2)
-Dexternal_url=http://fuse_server_2:port/

That way your configuration is shared but certain aspects/properties of 
the configuration are *externalized*.

This feature was originally meant to support more easily migrating data 
between dev/test/prod environments, but it would work fine for this as well.

Did any of that help?

-Eric


On 1/19/2016 5:30 AM, Charles Moulliard wrote:
> Hi,
>
> If I use a loadbalancer (= F5) exposing a physical IP address (= routed
> on internet) and calling one of our endpoints (REST, ...) running into
> different integration servers (Fuse + Camel), can we design such topology ?
>
> We setup an Apiman Manager  (Front + ElasticSearch Database) to define
> the plans, services, roles, policies of all the endpoints which are
> running into different Fuse Servers. As the mapping between the incoming
> request and the endpoint is managed by the Apiman Gateway, I'm thinking
> to install one Apiman Gateway / Fuse Server.
> Is it doable ?
>
> Client --> 192.168.1.1 (IP Address of the Server replying to a REST
> Service) "Loadbalancer F5" --> NAT --> address of the gateway (=
> 10.0.2.1) managing the mapping between the request and the physical
> endpoint --> Camel REST Endpoint (10.0.1.1). The Apiman Manager could
> run internally on this addess (10.0.2.100).
>
> To support high availability or workload distribution, it will be
> required that at least each Camel REST / Web Service runs into multiple
> instances of Fuse Servers. That means that their IP address will be
> different (A REST service will be deployed on 10.0.1.1, 10.0.1.2,
> 10.0.1.3, ...).
>
> Question : As the GUI interface of the Apiman Manager to encode the
> address of the endpoint to map proposes one field (and no more if we
> would like to distribute the requests to different servers), is there a
> possibility to define a 1 to many relation into ApiMan Server (maybe if
> we develop such a feature) or do I have also to install an Apiman
> Manager / Gateway per Fuse Server and to encode the same info (plans,
> services, ...) excepted the IP address of the server which is different ?
>
> Regards,
>
> Charles
> _______________________________________________
> Apiman-user mailing list
> Apiman-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/apiman-user
>


More information about the Apiman-user mailing list