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 > >
