Hi Imesh, Thank you!
But it seems I still don't have edit rights. Could you please check it once? Thanks and Regards, Swapnil On Wed, Apr 22, 2015 at 11:44 PM, Imesh Gunaratne <im...@apache.org> wrote: > 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 <swapnil.r...@gmail.com> > 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 <gay...@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.r...@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 <gay...@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.r...@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 <gay...@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.r...@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 <im...@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.r...@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 : gay...@wso2.com | mobile : +94 766819985 >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Gayan Gunarathne >>>>> Technical Lead >>>>> WSO2 Inc. (http://wso2.com) >>>>> email : gay...@wso2.com | mobile : +94 766819985 >>>>> >>>>> >>>> >>>> >>> >>> >>> -- >>> >>> Gayan Gunarathne >>> Technical Lead >>> WSO2 Inc. (http://wso2.com) >>> email : gay...@wso2.com | mobile : +94 766819985 >>> >>> >> >> > > > -- > Imesh Gunaratne > > Technical Lead, WSO2 > Committer & PMC Member, Apache Stratos >