Just read this thread, and I thought I would give my humble opinion on this:
As a hosting provider we use both windows and unix backends, en we use haproxy
to balance requests across sites on a per-site backend (with squid in front of
haproxy). What I would love to see, is dynamic balancing based on the
round-trip time of the health check.
So when a backend is slower to respond, the weight should go down (slowly), so
the faster servers would get more requests. Now that's a feature I'd love to
see.. And then there would not be anything to configure on the backend (we
don't always have control over the backend application)
Just my 2 cents.
--
With kind regards,
Angelo Höngens
Systems Administrator
--
NetMatch
tourism internet software solutions
Ringbaan Oost 2b
5013 CA Tilburg
T: +31 (0)13 5811088
F: +31 (0)13 5821239
mailto:a.hong...@netmatch.nl
http://www.netmatch.nl
--
-Original Message-
From: Willy Tarreau [mailto:w...@1wt.eu]
Sent: vrijdag 16 oktober 2009 22:59
To: Hank A. Paulson
Cc: Craig; haproxy@formilux.org
Subject: Re: dynamic weights based on actual server load
On Fri, Oct 16, 2009 at 01:36:52PM -0700, Hank A. Paulson wrote:
For the code you are developing, if you make the interface general enough
so that parameters can be added or removed that would be good.
Telnet/text/memcached style protocols seem popular to allow easy
debugging/monitoring.
So if your protocol says a machine has to send a load info bundle like:
SS:8cbed340118ddf87e2d8ca4352006572
SYSID: blah1
SAMPLETIME: 2009-10-14-22-00-03
CPU: 83.23343455
NETI: 134238.0232
NETO: 492283.6549
DISK: 433.232
ES:8cbed340118ddf87e2d8ca4352006572
It's a lot better to return these information in HTTP headers, because
that can be added on top of any other resource that haproxy would check.
(...)
It is probably possible to just modify feedbackd to emit haproxy set
weight commands.
Don't do that ! The set weight is for the human, not for an automaton.
The most interesting usage is set weight xx/xx 0 to disable a server
before operating on it, or set weight xx/xx 50% to off-load it a bit
if you see it start swapping. If you send an automated tool on it, it
will constantly change your manually assigned values.
More interesting, I think would be to combine a multiple load parameter
(active connections, CPU, net in/out bytes, net in/out packets, disk io,
etc) feedback system with the ideas from the NetBSD neural network
scheduler, creating an ai based dynamic load balancing system.
http://softlayer.dl.sourceforge.net/project/nnsched/docs/thesis/nnsched.pdf
This is more possible now that we have multi core systems that would have
some idle CPU resources available for the ai compute load.
if doing some computations on that few parameters consumes even
a measurable amount of CPU, then they are clearly wrong. We're
not doing fractals here. Combining 3-4 parameters should not
results on billions of operations.
Willy