modperl-load_balancing

This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.



To: <modperl@apache.org>
From: "Hemant Singh" <hsingh@ggn.aithent.com>
Subject: load balancing on apache
Date: Fri, 14 Dec 2001 14:21:10 +0530

I am planning to host an application and its size is going
to be big one, so I expect the concurrent number of
connections to be around 2200. To combat the same, I want to
perform load sharing on 3-4 servers. So the idea is to put one
machine on external IP and this machine, after receiving
the requests would forward them to any of the other three
machines having the application deployed and running on the
same environment. Please suggest how can I achieve this on apache.

===

To: "Hemant Singh" <hsingh@ggn.aithent.com>,
<modperl@apache.org>
From: john8hoffman127@msn.com
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 01:31:38 -0600

    A round-robin dns server would be easiest.  There's no
    true load balancing

===

To: <modperl@apache.org>
From: Mark Fowler <mark@twoshortplanks.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 09:02:42 +0000 (GMT)

On Fri, 14 Dec 2001, Hemant Singh wrote:

> Pls suggest how can i achieve this on apache.

mod_backhand may be able to help you out here with proper "pass it on"  
type load balancing.  If you use it with wackamole you might not even need
the front machine.

http://www.backhand.org/

Haven't used it myself, but people I know say good things about their 
experiences with it.

===

To: "Hemant Singh" <hsingh@ggn.aithent.com>
From: Dave Hodgkinson <daveh@davehodgkinson.com>
Subject: Re: load balancing on apache
Date: 14 Dec 2001 09:23:20 +0000

"Hemant Singh" <hsingh@ggn.aithent.com> writes:

> I am planning to host an application and its size is going to be big one , so
> expect the concurrent number of connection s to be around 2200.To combat the
> same , want to perform load sharing on 3-4 servers.So the ide is to put one
> machine on external IP and this machine , after receiving the requests would
> forward them to any of the other three machines having the application
> deployed and running on the same environment.Pls suggest how can i achieve
> this on apache.

Depends how much session persistence you're keeping on the middle
tier. You can do things smarter than pure round robin with a few
mod_rewrite rules on the front. 

===

To: modperl@apache.org
From: Steven Lembark <lembark@wrkhors.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 03:15:30 -0600

Hemant Singh <hsingh@ggn.aithent.com> wrote:

> I am planning to host an application and its size is going to be big one
> , so expect the concurrent number of connection s to be around 2200.To
> combat the same , want to perform load sharing on 3-4 servers.So the ide
> is to put one machine on external IP and this machine , after receiving
> the requests would forward them to any of the other three machines having
> the application deployed and running on the same environment.Pls suggest
> how can i achieve this on apache.

Randal Schwartz had a good article on this about a year
ago. You can use the re-write phase to balance the load
w/in Apache if you want to. Alternatives include round-
robin DNS and separate load balancing software.

===

To: modperl@apache.org
From: Igor Sysoev <is@rambler-co.ru>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 18:25:23 +0300 (MSK)

On Fri, 14 Dec 2001, Steven Lembark wrote:

> -- Hemant Singh <hsingh@ggn.aithent.com>
> 
> > I am planning to host an application and its size is going to be big one
> > , so expect the concurrent number of connection s to be around 2200.To
> > combat the same , want to perform load sharing on 3-4 servers.So the ide
> > is to put one machine on external IP and this machine , after receiving
> > the requests would forward them to any of the other three machines having
> > the application deployed and running on the same environment.Pls suggest
> > how can i achieve this on apache.
> 
> Randal Schwartz had a good article on this about a year
> ago. You can use the re-write phase to balance the load
> w/in Apache if you want to. Alternatives include round-
> robin DNS and separate load balancing software.

I don't think that frontend mod_perl can handle 2200 concurrent
connections. The plain Apache with mod_proxy/mod_accel can handle them
with about 1.5G memory.

Igor Sysoev

===

To: "Hemant Singh" <hsingh@ggn.aithent.com>,
<modperl@apache.org>
From: "Perrin Harkins" <perrin@elem.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 10:29:47 -0500

> I am planning to host an application and its size is going to be big one ,
> so expect the concurrent number of connection s to be around 2200.
> To combat the same , want to perform load sharing on 3-4 servers.

If you really expect 2200 concurrent connections, you should buy dedicated
load-balancing hardware like Big/IP or Cisco LocalDirector.

===

To: "Hemant Singh" <hsingh@ggn.aithent.com>,<modperl@apache.org>
From: <fred@igtech.fr>
Subject: RE: load balancing on apache
Date: Fri, 14 Dec 2001 16:49:13 +0100

With this amount of connections, you may want to check LVS at
http://www.linuxvirtualserver.com or Ultra Monkey et
http://ultramonkey.sourceforge.net/ (althought i never used the last one, I
think it might be easier to use).

This is open, efficient and reliable load balancing and high
availability software. Using it, you just have to install
several (common) apache server running your application, and
tell the load-balancer to forward to one of the real
servers. Nothing special to install exept an NFS or Coda
service to share your Web sites.

===

To: "Hemant Singh" <hsingh@ggn.aithent.com>, <modperl@apache.org>
From: "Derek Jones" <scunacc@yahoo.com>
Subject: RE: load balancing on apache
Date: Fri, 14 Dec 2001 08:59:42 -0500

You can do load balancing using ipchains as well.

Can't remember the program name offhand, but if I have time
I'll look it up and let the list know.

Only works if your servers are Linux of course.

===

To: <scunacc@yahoo.com>, "Hemant Singh"
<hsingh@ggn.aithent.com>,
From: <fred@igtech.fr>
Subject: RE: load balancing on apache
Date: Fri, 14 Dec 2001 17:11:40 +0100

Well, Linux Virtual Server is using ipchains (on the load
balancer), and you can use any kind of OS on your real
servers (those running your application), since it's only
TCP/IP routing and/or forwarding.

===


To: "Perrin Harkins" <perrin@elem.com>
From: Dave Hodgkinson <daveh@davehodgkinson.com>
Subject: Re: load balancing on apache
Date: 14 Dec 2001 16:34:09 +0000

"Perrin Harkins" <perrin@elem.com> writes:

> > I am planning to host an application and its size is going to be big one ,
> > so expect the concurrent number of connection s to be around 2200.
> > To combat the same , want to perform load sharing on 3-4 servers.
> 
> If you really expect 2200 concurrent connections, you should buy dedicated
> load-balancing hardware like Big/IP or Cisco LocalDirector.

Aside from the fact I _really_ wouldn't expect that manny actual, live
TCP connections at one time...that many users, maybe...

I _really_ hate so-called dedicated boxes. They're closed, nasty,
inflexible and often don't work in _your_ situation. Doing smart
session-based redirection can be hard with these boxes.

===

To: Perrin Harkins <perrin@elem.com>
From: Nick Tonkin <nick@rlnt.net>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 08:24:00 -0800 (PST)

You should also check out Coyote Point's Equalizer ... this a
hardware/software solution that worked well for ValueClick up to about 70
million requests per day. It's basically a FreeBSD box with a custom
dynamic natd ... supports hot-swap redundancy with two of 'em installed
... and a _lot_ cheaper than LocalDirector and others (although we did
move to a high-end Foundry Server Iron system eventually) ... good support
from a small company too.

===


To: <fred@igtech.fr>, "Hemant Singh"
<hsingh@ggn.aithent.com>,
From: "Derek Jones" <scunacc@yahoo.com>
Subject: RE: load balancing on apache
Date: Fri, 14 Dec 2001 09:30:56 -0500


>  Well, Linux Virtual Server is using ipchains (on the load balancer), 
> and you can use any kind of OS on your real servers (those running your 
> application), since it's only TCP/IP routing and/or forwarding.


Thanks Frederic, I had only ever hand-cranked this kind
of setup manually with ipchains and not looked as LVS. 8-)

Yes indeed, the OS you run it on is Linux as a load-balancing
router, and yes, the balanced machines can be anything. I've
run various Windoze machines (ulp!) behind this kind of setup.

===

To: "Dave Hodgkinson" <daveh@davehodgkinson.com>
From: "Perrin Harkins" <perrin@elem.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 12:06:15 -0500

> Aside from the fact I _really_ wouldn't expect that manny actual, live
> TCP connections at one time...

Nor would I, although we did see huge numbers of open connections during
peak times at eToys.  Mostly to the image serving machines though.

> I _really_ hate so-called dedicated boxes. They're closed, nasty,
> inflexible and often don't work in _your_ situation. Doing smart
> session-based redirection can be hard with these boxes.

You can make it work with homegrown solutions, but I've found the dedicated
load-balancing tools (at least Big/IP) to be effective and fairly easy to
work with, even with large loads, failover requirements, and more exotic
stuff like sticky sessions.  This is one area where the problem seems to be
well enough defined for most people to use an off-the-shelf solution.
They're often more expensive than they should be, but if you don't have
someone on hand who knows the ipchains or LVS stuff it can save you some
time and trouble.

===

To: perrin@elem.com
From: "Erich L. Markert" <emarkert@netscape.net>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 12:28:21 -0500

perrin@elem.com wrote:

>
>You can make it work with homegrown solutions, but I've found the dedicated
>load-balancing tools (at least Big/IP) to be effective and fairly easy to
>work with, even with large loads, failover requirements, and more exotic
>stuff like sticky sessions.  This is one area where the problem seems to be
>well enough defined for most people to use an off-the-shelf solution.
>They're often more expensive than they should be, but if you don't have
>someone on hand who knows the ipchains or LVS stuff it can save you some
>time and trouble.
>
>- Perrin
>
If  I'm not mistaken didn't the article about perl/mod_perl and etoys 
have some interesting things regarding load balancing?

http://www.perl.com/pub/a/2001/10/17/etoys.html

===

To: Perrin Harkins <perrin@elem.com>
From: Jeff Beard <jeff@cyberxape.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 10:38:34 -0700 (MST)

On Fri, 14 Dec 2001, Perrin Harkins wrote:

> > I _really_ hate so-called dedicated boxes. They're closed, nasty,
> > inflexible and often don't work in _your_ situation. Doing smart
> > session-based redirection can be hard with these boxes.
>
> You can make it work with homegrown solutions, but I've found the dedicated
> load-balancing tools (at least Big/IP) to be effective and fairly easy to
> work with, even with large loads, failover requirements, and more exotic
> stuff like sticky sessions.  This is one area where the problem seems to be
> well enough defined for most people to use an off-the-shelf solution.
> They're often more expensive than they should be, but if you don't have
> someone on hand who knows the ipchains or LVS stuff it can save you some
> time and trouble.

I couldn't agree more. In terms of managability and scalability,
the various software solutions simply add complexity to something that is
already so. I've got some experience with Alteon AceDirectors and even though
they seem little flakey at times, you do end up with true load balacing. (We
have Cisco's solution deployed and they periodically have issues too.)

DNS round-robin should be avoided at all costs. It's half-assed at best. In
the case of a failure those clients that have that IP cached are SOL.

On some of the systems that I've deployed we have a frontend proxy on the same box
as the mod_perl with the mod_perl server listening on 127.0.0.1. This is
behind an Alteon (or 2). You can put the proxy on a separate box as well but
(I've seen some odd problems with TCP connections not working in this situation
which I never fully understood but may have had to do with the Alteon being flakey.)

Anyway, my advice is to go with a hardware load balancer/intelligent IP switch.
In the long term, it will pay for itself in the time recovered from *not* being
spent on troubleshooting complex problems.

===

To: "Tom Mornini" <tmornini@infomania.com>,
<modperl@apache.org>
From: "Perrin Harkins" <perrin@elem.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 17:21:26 -0500

> At least one person MUST mention Backhand!

He actually posted this on the mod_backhand list, and Theo suggested he buy
a content switch.  Many of the useage scenarios for mod_backhand involve
coperating with load-balancing hardware of some kind, so it's not that
surpising.

> I'm working on a project right now that is expected to grow to 100+
> servers in the next 12 months. In past projects I've worked on, handling
> of the log files becomes non-trivial at numbers far below that, so I
> built the new system to log via Spread (www.spread.org) and it is a
> wonderful thing to behold.

Backhand doesn't actually use Spread, IIRC.  That's cool that you got Spread
working with Perl though.  I've been thinking that Spread would make a good
mechanism for distributing shared data, possibly as an Apache::Session or
Cache::Cache backend.

===

To: Hemant Singh <hsingh@ggn.aithent.com>
From: Medi Montaseri <medi@CyberShell.com>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 16:31:53 -0800 (PST)

I think you also have to specify weather your web applications are
state-less or not. If stateless, then you can just use DNS Round Robin
technique or lbnamed (Load Balancing Name Server) to achieve this load
balancing or high availability.

If your apps are statefull as in ASP, Cold Fusion, JSP, etc, then you'll
need to retain the sessions and that becomes more complicated but
possible.

===

To: <lembark@wrkhors.com>, <modperl@apache.org>
From: "Jimi Thompson" <jimit@prodigy.net>
Subject: Re: load balancing on apache
Date: Fri, 14 Dec 2001 21:17:44 -0600

My recommendation is that you do none of the things that you are looking at
for optimal performance.  Instead, opt for a seperate hardware solution.  We
went through this about a year ago when we were architecting a solution for
my employers site.  Admittedly, takes more traffic than you do, but we found
that the dedicated hardware device offers many advantages  (including layer
7 routing capablity) which we have found to be extremely useful and well
worth the extra cabbage.

Cisco (and several other folks as well) make some fine load balancing
hardware devices.  Alteon makes one, I know .  We evaluated it, but we got a
better price and better support from Cisco so we went with the CSS even
though I was as impressed with their device.

I'm sure that there are lower end alternative, but it depends on what kind
of load balancing you want to do.  Do you want to do "round robin"?  If not,
then what criteria do you want to use?

===

To: Anand R <anandr@dsmsoft.com>
From: Medi Montaseri <medi@CyberShell.com>
Subject: Re: load balancing on apache by IP CHAINING
Date: Sat, 15 Dec 2001 20:57:19 -0800 (PST)

I'm confused....'IP chainging' as the name says is at the IP (or Network)
layer, what does that have to do with Apache or any HTTP server at the
application level. 

I think any such IP based load balancing technologies are inherently
unaware of the total system issues and are simply making a jugdment based
on the IP level or perhaps a specific protocol on top of IP to route the
next packet (or next session). Having said that a Perl HTTP would/could
benefit from it just as well...

===

To: <modperl@apache.org>
From: David Young <dyoung@nettonettech.com>
Subject: Re: load balancing on apache by IP CHAINING
Date: Sun, 16 Dec 2001 11:44:49 -0500

Servlet chaining is what the Java web server will do, and it has nothing to
do with load balancing (that I can think of).

ipchains is the command to enable firewall/packet filter/packet masquerading
capability in linux. I would suppose that it can be used to round-robin
requests or something, but I don't know how to set that up.

===

To: "'David Young'" <dyoung@nettonettech.com>,
modperl@apache.org
From: Joe Breeden <jbreeden@ena.com>
Subject: OT RE: load balancing on apache by IP CHAINING
Date: Mon, 17 Dec 2001 08:46:36 -0600

I don't know how many of you read SysAdmin (http://www.samag.com), but there
is an interesting article on running IPChains at runlevel 0.


===


the rest of The Pile (a partial mailing list archive)

doom@kzsu.stanford.edu