If anybody wants my very immature load balancer written in C#:http://www.bradfitz.com/share/monobal/monobal-0.2.tar.gz
Now featuring an HTTP header class which parses headers, replaces headers, retrieves headers, etc.
So the load balancer now replaces/sends along the X-Forwarded-For header to the back end, and always does Connection: close, and always does HTTP/1.0 to the backend. (wanting to avoid dealing with chunking for now)
Things to do:
-- support POSTs (only GET works now)
-- limit max incoming header length
-- limit global proxy to client buffer size
-- limit max pending connections
-- limit per-connection proxy to client buffer size
-- wait for bugs.ximian.com and make sure some variation of my socket patch gets committed
-- make the load balancer be more of a usable object itself, letting clients set its listening port, backend node selector manager, limits, etc.
-- make a front-end which parses command-line args and inits the load balancer.
-- write a node selector to listen to LJ's broadcast messages and do random weighted selections.
-- write some stupid node selector subclasses as demos
-- proper C#-style docs
-- timeouts everywhere
-- management/stats port.
-- tons of testing
-- put it in limited production somehow and make it take a beating. :-)