Hello all, I have written apache 2.x module 'mod_layer7' that can be used for load balancing and application layer switching purposes.
http://layer7.sourceforge.net/ Currently I'm working on 'cookie encryption' feature so that module could transparently encrypt/decrypt cookie values for all traffic that is passing through the apache (if you can't or don't want to use HTTPS for all traffic for some reason). This feature is mostly an experiment, but maybe it could/might be handy in some cases. I'm also improving possibilities to have programmatic control over compression (mod_deflate), caching (mod_cache), persistence and possibilities to handle situations where selected backend server in load balancing pool in down (reselect other server in pool or send redirect). Anyways, if any of you have had time/interest to check this module out and have any comments/problems/suggestoions, please send them so I can improve this module. Also if you would like to help me in this project (building apache based poor-man's load balancer with features that are currently (only?) available in commercial products such as F5 BIG-IP, Zeus, A10, KEMP) please send me email, help is always appreciated :) The first version is available for download here: http://layer7.sourceforge.net/download.html Already in this version you can have programmatic control over HTTP traffic (basic request and response rewriting, cookie rewriting, pool selection based on request properties) and different features (enable compression, enable/disable persistence, ..), for example: sub on_request { .. # select different pool for image files.. if ($request->get_uri() =~ m!\.jpg$!) { # for images, use 'image-pool' $context->select_pool("image-pool"); # disable persistence } # change some request properties before request is passed to pool $request->add_header("X-Something", "Funny"); } sub on_lbfailure { ... # oops, our pool/site is down, send redirect to some error page (or you could retry with other server in a pool) $response->send_redirect('http://backup-site.example.com/servicebreak.html'); ... } Best Regards, Juha