On Nov 14, 2012, at 11:01, Tim Bannister <is...@jellybaby.net> wrote:

>> I really like how Perlbal does it:
>> 
>> It opens a connection when it thinks it needs more and issues a (by default, 
>> it's configurable) "OPTIONS *" request and only after getting a successful 
>> response to the test will it send real requests on that connection (and then 
>> it will keep the connection open with Keep-Alive for further requests).
> 
> X-Server-Load: would still be an improvement, eg with this response to 
> OPTIONS:
> HTTP/1.1 200 OK
> Date: Wed, 14 Nov 2012 19:00:00 GMT
> Server: Apache/2.5.x
> X-Server-Load: 0.999
> 
> …the balancer might decide to use a backend that is reporting a lower load.

I know I am fighting the tide here, but it's really the wrong smarts to put in 
the load balancer.

The backend should/can know if it can take more requests.  When it can't it 
shouldn't and the load balancer shouldn't pass that back to the end-user but 
rather just find another available server or hold on to the request until one 
becomes available (or some timeout value is met if things are that bad).

With the "Perlbal-model" the backend can control how much work it will take on 
and the load balancer will never send traffic to an overloaded or hung server, 
so the users will always get to the first truly available backend.

The load balancer smarts should be in managing these "let's see if you are 
ready" requests and "pending" connections.


Ask

-- 
Ask Bjørn Hansen, http://askask.com/



Reply via email to