Fwd: fair load balancing?

Nathan Kurz nate at verse.com
Mon Jun 23 21:29:46 UTC 2008

On Thu, Jun 19, 2008 at 8:08 PM, Mark Smith <smitty at gmail.com> wrote:
> verify_backend makes the process of connecting to a backend into this:
> 1) start TCP connection to backend
> 2) on accept, send an "OPTIONS *" request
> 3) on 200 OK response, put backend in the pool

As an observer, his thread has been helpful for my thinking, but there
are still a few details I'm unclear about.  Particularly, assuming I
have persistent connections to both the client and the backend, what
happens at the end of a request?

Do the particular client and particular backend remain associated for
multiple requests, or does the backend go back into the pool?  Is the
Options request sent once per client, once per backend, or once per

The use case I'm considering involves two levels of Perlbal for a
distributed search engine.  An application makes a request to the a
front end search server, which in turn makes parallel requests via a
custom plugin to a dozen or so backend search servers.   The backend
servers act as standard reverse proxies to a small fixed number of
local processes.

I'd like to be able to run two front end search servers for
redundancy, each with multiple persistent connections to each of the
back end servers.  I'm worried that if one front end server
temporarily goes down, the other might end up hogging all the
processes.  I think that if the backends go back into the pool after
each request I'm safe, but that if the clients remain associated I'll
have problems.   How does it actually work?


Nathan Kurz
nate at verse.com

(sorry for the dup, Mark.  Someday I'll remember this list is reply-to-sender!)

More information about the perlbal mailing list