Re: how to achieve URL hash LB algorithm on ZXTM
"Greg Howett" <[email protected]> Mon, 3 Aug 2009 10:31:34 +0100
| Newsgroups | gmane.comp.programming.load-balancing.general |
|---|---|
| Message-ID | <[email protected]> |
Hi, We use the Zeus core as part of our Enterprise range of appliances as such we have written a lot of complex traffic/Java and have not experienced any CPU limitations even in very busy environments. Clearly it's a programming language so it will depend on the quality of the code etc but Ben is right, it seems like we see a small Hit for a basic script but no measurable difference for a large script. Greg -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Ben Mansell Sent: 31 July 2009 16:43 To: Load Balancing Mailing List Subject: Re: [load balancing] how to achieve URL hash LB algorithm on ZXTM Excellent news! It's difficult to say, in general, what impact TrafficScript has on performance, as it all depends on just what you are doing with it. Complex actions, such as performing big regular expression matches and data substitution, will use more CPU. The rule that you are using should have not much impact, as it is doing relatively little work, for instance. A key point though is that there is no "fast path" for HTTP processing that cannot be used when you start using TrafficScript, i.e. you won't take a big hit to performance when using small amounts of TrafficScript vs using none. Ben On 31/07/2009 15:24, Eric Y. Zhang wrote: > Thanks Ben > it works like a charm!! TrafficScript is quite impressive. any idea about how TrafficScript impacts the performance of ZXTM? > > > > On Thu, Jul 30, 2009 at 6:33 PM, Ben Mansell<[email protected]<mailto:[email protected]>> wrote: > That is what it achieves. It does this by using a session persistence mapping that picks a server to use based on the URL requested, and not on the client. > > > Ben > > > On 30/07/2009 06:45, Eric Y. Zhang wrote: > thanks. but that is not what I really want. the trafficscript divided traffic based on session, I want something like this > > www.abc.com/1.html<http://www.abc.com/1.html><http://www.abc.com/1.html> on squid1 permanently > www.abc.com/2.html<http://www.abc.com/2.html><http://www.abc.com/2.html> on squid2 permanently > > > Eric > > On Wed, Jul 29, 2009 at 5:19 PM, Ben Mansell<[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:ben @zeus.com>>> wrote: > > On 29/07/2009 00:48, Eric Y. Zhang wrote: > routing requests to different backend server in same pool.let's say, I have 5 squid servers behind LB, if LB can do URL hash, then 1of squid server only needs take 20% requests, that helps a lot. > > There are a few ways to achieve this. The first is to use the 'perceptive' load balancing algorithm. This takes several factors into account when choosing a node to use, including the URL of a request. However, it's only one of many factors, so it doesn't rigidly enforce the URL->squid server mapping that you probably want. > > What you can do instead is to leave the LB algorithm unaltered, and instead use a session persistence class to dictate where each request goes. > > Create a 'Universal' session persistence class and assign it to your pool of squid servers. This then lets a TrafficScript rule pick which squid server to use. The TrafficScript command is: > > connection.setPersistenceKey( http.getRawURL() ); > > ...and then requests with the same URL will use the same squid server. However, this needs a bit of refinement. You are likely to have many many different URLs going to your squid servers. Each different URL creates a different session persistence mapping, and there are limits on the number of these. To ensure that too many aren't used, we can 'hash' the URL into a smaller set of sessions: > > # Hash the URL, then take the first byte, giving 256 different sessions. > # This also uses the website hostname, in case you are caching several > # websites. > $session = string.left( string.hashMD5( http.getHostHeader() . > http.getRawURL() ), 1 ); > connection.setPersistenceKey( $session ); > > So, add this rule in, assign it to your virtual server and then your squid traffic will be nicely divided up. This should improve the cache hit rates. > > > Ben > _______________________________________________ > lb-l mailing list > [email protected]<mailto:[email protected]><mailto:[email protected]<mailto:lb-l@ vegan.net>> > > http://vegan.net/mailman/listinfo/lb-l > Searchable Archive: http://vegan.net/lb/archive > http://lbdigest.com Load Balancing Digest > http://lbwiki.com Load Balancing Wiki > > > > -- > Life is hard > > _______________________________________________ > lb-l mailing list > [email protected]<mailto:[email protected]> > http://vegan.net/mailman/listinfo/lb-l > Searchable Archive: http://vegan.net/lb/archive > http://lbdigest.com Load Balancing Digest > http://lbwiki.com Load Balancing Wiki > > > > -- > Life is hard _______________________________________________ lb-l mailing list [email protected] http://vegan.net/mailman/listinfo/lb-l Searchable Archive: http://vegan.net/lb/archive http://lbdigest.com Load Balancing Digest http://lbwiki.com Load Balancing Wiki _______________________________________________ lb-l mailing list [email protected] http://vegan.net/mailman/listinfo/lb-l Searchable Archive: http://vegan.net/lb/archive http://lbdigest.com Load Balancing Digest http://lbwiki.com Load Balancing Wiki