Hi Swapnil, I have given you post edit rights to the proposal, you could try to edit it in Melange.
Thanks On Wed, Apr 22, 2015 at 6:47 PM, Swapnil Patil <[email protected]> wrote: > 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 <[email protected]> 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 <[email protected]> >> 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 <[email protected]> >>> 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 <[email protected]> >>>> 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 <[email protected]> >>>>> 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 < >>>>>> [email protected]> 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 <[email protected]> >>>>>>> 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 < >>>>>>>> [email protected]> 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 : [email protected] | mobile : +94 766819985 >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> Gayan Gunarathne >>>> Technical Lead >>>> WSO2 Inc. (http://wso2.com) >>>> email : [email protected] | mobile : +94 766819985 >>>> >>>> >>> >>> >> >> >> -- >> >> Gayan Gunarathne >> Technical Lead >> WSO2 Inc. (http://wso2.com) >> email : [email protected] | mobile : +94 766819985 >> >> > > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos
