httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juha Ranta <juha.ra...@gmail.com>
Subject mod-layer7 - load balancing module: new features and looking for help/contributors
Date Wed, 03 Nov 2010 22:33:40 GMT
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

Mime
View raw message