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