List Info

Thread: httpd-proxy-scoreboard




httpd-proxy-scoreboard
user name
2006-07-27 11:25:30

On 07/27/2006 11:31 AM, Jean-frederic Clere wrote:
> Ruediger Pluem wrote:
> 
>> On 07/26/2006 10:53 PM, Jean-frederic Clere wrote:
>>
>>
>>  
>>
>>> I already have a prototype of an external
health checker process that
>>> uses an AJP cping/cpong and a simple connect
for http/https.
>>> Basicaly mod_proxy uses the
health_worker_method routine to write and
>>> read from a slot mem that contains the
information of the workers + a
>>> health information. A balancer could check the
health information before
>>> using the worker. The health checker process
uses the worker description
>>> (thru the health_worker_method) to check if the
back-end service is
>>> running.
>>>   
>>
>>
>> Sorry, you may have explained that before, but why
using an external
>> health
>> checker process?
>>  
>>
> The idea is to have the health check independant from
the requests so
> that httpd knows in advance that a worker is not
working.

Ah, now I get it. Ok, I guess we both have slightly
different ideas about what
to health check. Your idea is more of a server health check
and is somewhat
similar to what HW loadbalancers are doing: Check each
backend on a regular
schedule if it is still available.

My idea is more of a connection health check. I want to
check if the connection
I leased from the pool is still healthy. If it is not that
does not mean
necessarily that the server in the backend failed.
It could be just this connection. So the default response on
a faulty connection
would be to close this one and try with a new one. Only if
this fails also then
there seems to be something wrong with the backend server.
This is more like what
most DB connection pools offer with a health-check query.

I think both ideas make sense. Of course the connection
health checks should be
simpler than the server health check to avoid too much
overhead and too much
lost time.
That is the reason why I think that e.g. doing a HTTP
request on a HTTP connection
leased from the pool is unreasonable. We need some quick
network layer check in this
case, whereas in the AJP case CPING/CPONG has still an
acceptable overhead.

Finally I think if we have a good provider interface we can
use the health check providers
for both kind of health checks. We only need to create the
frameworks for them
to start in different parts of the code (separate process in
your case, in my case
I would guess that it needs to replace is_socket_connected
which is called from
ap_proxy_connect_backend)

Regards

Rüdiger

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )