stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Swapnil Patil <swapnil.r...@gmail.com>
Subject Re: Google Compute Engine Load Balancing Support for Stratos - GSoC 2015
Date Wed, 22 Apr 2015 13:17:27 GMT
Hi Gayan,

OK. I will put a comment.

Thank you for your time.

Regards,
Swapnil

On Wed, Apr 22, 2015 at 6:28 PM, Gayan Gunarathne <gayang@wso2.com> wrote:

> 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