Mladen Turk wrote:
Sure, the general idea was to allow different lb methods. I've started to collect the transferred for various protocols to be able to do a traffic balancing.
So, there will be an API to allow developers to develop load balancers without having to muck with the proxy code? If so, yes! If not, it would rule.
What we did is write our own proxy module because of limitations in the 2.0 one. Basically it's like this:
-There is an external programe (started like a piped log program) that does "active" health checking. Every x seconds it checks all the "origin" servers and records their status in shared memory.
This is more or less what mod_backhand does. (it is more passive, waiting for a active server to send out a multicast or an ethernet broadcast saying that it is alive, along with stats.)
-In our proxy module, it uses the information in the shared memory to maintain a apr_reslist of connections. It it gets an error before sending data to the client (one origin server hiccup'ed, for example), it will apr_reslist_invalidate that connection, apr_reslist_acquire another and try again. It will do this x times.
I like this approach. It makes sense in most situations to try multiple reslist connections.
-only after x "errors" will an error actually be returned to the client.
-because of this, we could not use mod_proxy_http and use our own http client code.
I don't see why with todays framework it couldn't re-use most of proxy_http.
Does this sound doable within the 2.1/2.2 proxy lb? Or do will we have to continue to maintain our own proxy? This functionality is very important for us.
This sounds like a well designed module for your needs, but I think most of the features could be well used in other places. Could your module be made open source, and used as a starting point for us?
-Paul Querna
