Hi,

I have proposed a solution for the project on $subject where I am using an
HA Proxy between incoming request and Google Compute Engine (GCE) load
balancing components.

I have been advised to provide more description regarding why I am using HA
Proxy in my proposed solution.

Please find below the reason for the same.

Stratos needs to route traffic based on the hostname field of the incoming
request. I have proposed to use Network Load Balancing of Google Compute
Engine (GCE) which does not provide any central component that makes
routing decisions based on the hostname field of the request.

GCE network load balancing has following concepts
1. Target pool - a set of instances. In Stratos, a cluster can be treated
as target pool.
2. Forwarding rule - A forwarding rule has an external IP, a port range, a
target pool. Whenever a request is made to this external IP with port
numbers specified in the port range, the request is routed to the specified
target pool.

As GCE network load balancing does not have any mechanism to route traffic
based on hostname, I proposed to use HA Proxy between incoming requests and
GCE load balancing components.

If we use HA Proxy, we can add a rule saying which forwarding rule should
be used for a particular combination of hostname, protocol and port. So
forwarding rules of GCE load balancing will act as backend instances of HA
Proxy.

So overall flow would be as follows
1. HA Proxy decides which backend (forwarding rule) to use based on the
incoming request.
2. Request is delegated to the GCE forwarding rule associated with that
backend.
3. Forwarding rule of GCE routes the incoming request to the target pool
which is specified in the rule.
4. Target pool routes the incoming request to a particular instance in the
pool i.e. an instance in the cluster.

This is what I thought would be an appropriate solution. I would appreciate
if anybody has any thoughts on this.

Thanks and Regards,
Swapnil Patil
IIIT Hyderabad

Reply via email to