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:[email protected] http://www.netmatch.nl ------------------------------------------ -----Original Message----- From: Willy Tarreau [mailto:[email protected]] Sent: vrijdag 16 oktober 2009 22:59 To: Hank A. Paulson Cc: Craig; [email protected] 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

