stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gayan Gunarathne <gay...@wso2.com>
Subject Re: Google Compute Engine Load Balancing Support for Stratos - GSoC 2015
Date Wed, 22 Apr 2015 12:58:48 GMT
Hi Swapnil,

I guess now you can't update the proposal in the GSoC site. But you can put
this approach as a comment in that proposal.

Thanks,
Gayan

On Wed, Apr 22, 2015 at 6:15 PM, Swapnil Patil <swapnil.rp15@gmail.com>
wrote:

> Hi Gayan,
>
> Thank you for your opinion.
>
> Could you please tell me what should be my next step? Do I need to update
> my proposal on GSoC site?
>
> Thanks and Regards,
> Swapnil
>
> On Wed, Apr 22, 2015 at 5:04 PM, Gayan Gunarathne <gayang@wso2.com> wrote:
>
>> Hi Swapnil,
>>
>> +1 for the approach.Yeah you can create a forwarding rule with the
>> external IP and associate with the target pool.
>>
>> Thanks,
>> Gayan
>>
>> On Tue, Apr 21, 2015 at 6:59 PM, Swapnil Patil <swapnil.rp15@gmail.com>
>> wrote:
>>
>>> Hi Gayan,
>>>
>>> Thank you for your thoughts.
>>>
>>> Okay. So if no HA Proxy to be used, my approach would be as follows.
>>>
>>> Whenever topology change event is received this new load balancer
>>> extension will do following things.
>>>
>>> for each service
>>> for each cluster of the service
>>> if a target pool is not created for this cluster
>>> then
>>> create a target pool
>>> add all members of the cluster to target pool
>>> add ID of target pool to the map say 'clusterTargetPool'
>>> else
>>> get ID of the target pool using map 'clusterTargetPool'
>>> add/remove instances from target pool as necessary to match with cluster
>>> members
>>>
>>> create a forwarding rule with an external IP and associate the above
>>> target pool to this forwarding rule
>>>
>>> for each hostname in this cluster
>>> add DNS entry or /etc/hosts entry to use the exterrnal IP of forwarding
>>> rule for this hostname
>>> done
>>>
>>> add this forwarding rule to a map say 'clusterForwardingRules'
>>> done
>>> done
>>>
>>> Remove unnecessary target pools and forwarding rules.
>>>
>>> Could you please provide feedback on this approach?
>>>
>>> Thanks and Regards,
>>> Swapnil
>>>
>>> On Tue, Apr 21, 2015 at 4:02 PM, Gayan Gunarathne <gayang@wso2.com>
>>> wrote:
>>>
>>>> Hi Swapnil,
>>>>
>>>> IMO also we don't need HAProxy to do the port switching. As we are
>>>> using target pool for each cluster and you can assign the IP address to a
>>>> forwarding rule which is associate with the thread pool. Whenever you
>>>> access the service attach with the IP, it will forward the traffic into one
>>>> of these instances.
>>>> But you can refer the extension API of the HAProxy load balancer
>>>> [1].That would help you to fetch the topology information in real time and
>>>> update the configuration accordingly.
>>>>
>>>> As Imesh mention additionally we can map external IP address to a
>>>> hostname by using the /etc/host or DNS entry.
>>>>
>>>> [1]
>>>> https://github.com/apache/stratos/tree/master/extensions/load-balancer/haproxy-extension
>>>>
>>>> Thanks,
>>>> Gayan
>>>>
>>>>
>>>> On Tue, Apr 21, 2015 at 11:31 AM, Swapnil Patil <swapnil.rp15@gmail.com
>>>> > wrote:
>>>>
>>>>> Hi Imesh,
>>>>>
>>>>> Thank you for your input.
>>>>>
>>>>> Yes, I agree that we should create a target pool for each cluster. But
>>>>> as far as I know, we can't assign IP address to a target pool. We can
>>>>> assign IP address to a forwarding rule and a target pool will be associated
>>>>> with a forwarding rule. Also forwarding rule can filter requests based
on
>>>>> the port number.
>>>>>
>>>>> Yes, we could map external IP of forwarding rule to a hostname by
>>>>> using DNS entry or by using /etc/hosts.
>>>>>
>>>>> But I have one doubt, each service has a port and proxy port. Now I
>>>>> assume that 'proxy port' is used while contacting a load balancer and
load
>>>>> balancer will send the request on port value 'port' of an instance. Please
>>>>> correct me if I am wrong here.
>>>>>
>>>>> If this port-proxy port scenario I have assumed is correct, then I am
>>>>> not sure which component will do this switching of port value of requests
>>>>> if we don't use HA Proxy.
>>>>>
>>>>> Could you please let me know if I have misinterpreted anything or this
>>>>> port switching can be done even if we don't use HA Proxy?
>>>>>
>>>>> Thanks and Regards,
>>>>> Swapnil Patil
>>>>> IIIT Hyderabad
>>>>>
>>>>> On Mon, Apr 20, 2015 at 11:05 PM, Imesh Gunaratne <imesh@apache.org>
>>>>> wrote:
>>>>>
>>>>>> Hi Swapnil,
>>>>>>
>>>>>> Thanks for your response on this. IMO we could achieve this
>>>>>> functionality without having to use a haproxy instance.
>>>>>>
>>>>>> The concept we have here is to group all the members of a cluster
and
>>>>>> use a hostname to load balance incoming requests among them. With
GCE what
>>>>>> we can do is to create a target pool for each cluster and either
have a
>>>>>> dedicated external IP address for each target pool or use different
ports
>>>>>> on the same external IP address to access them.
>>>>>>
>>>>>> As an additional step we could map the external IP address to a
>>>>>> hostname by using a DNS entry or by using /etc/hosts.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Mon, Apr 20, 2015 at 9:57 PM, Swapnil Patil <
>>>>>> swapnil.rp15@gmail.com> wrote:
>>>>>>
>>>>>>> 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
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Imesh Gunaratne
>>>>>>
>>>>>> Technical Lead, WSO2
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Gayan Gunarathne
>>>> Technical Lead
>>>> WSO2 Inc. (http://wso2.com)
>>>> email  : gayang@wso2.com  | mobile : +94 766819985
>>>>
>>>>
>>>
>>>
>>
>>
>> --
>>
>> Gayan Gunarathne
>> Technical Lead
>> WSO2 Inc. (http://wso2.com)
>> email  : gayang@wso2.com  | mobile : +94 766819985
>>
>>
>
>


-- 

Gayan Gunarathne
Technical Lead
WSO2 Inc. (http://wso2.com)
email  : gayang@wso2.com  | mobile : +94 766819985

Mime
View raw message