mod_backhand is an Apache module that allows seamless redirection of HTTP requests from one web server to another. This redirection can be used to target machines with under-utilized resources, thus providing fine-grained, per-request load balancing of web requests.
Backhand is a project that was initiated in class at The Johns Hopkins University in The Department of Computer Science. After a simple proof of concept, written in C++, the project was pursued as a graduate qualifier project.
A proof of concept was realized, but a deployable product was needed. In order for public use, testing and, ultimately, acceptance, we wished to provide drop-in functionality in the most popular web server on the net.
mod_backhand was born. This drop-in module for the Apache Web Server provides a turnkey solution for intra-cluster redirection of HTTP on a per-request basis. The redirection is based on various system resources available within the cluster. This service is provided seamlessly, preserving remote host information for access/authentication purposes.
As with the methodology of Apache, the redirection mechanism can be enabled or disable for individual directories.
System resources are announced by the module to the cluster via ethernet broadcasts and/or IP multicasts. These resources are made available to the decision making algorithms that drive mod_backhand.
Supporting the following platforms:
· Linux (since release 0.5)
· Solaris (since release 1.0)
· BSDI (since release 1.0.5)
· (Net|Free|Open)BSD (since release 1.0.5)
· Linux (alpha fix) (since release 1.0.7)
· FreeBSD (since release 1.0.8)
· FreeBSD-4.x (since release 1.2.0)
· Windows NT through ntbhb (see related links) (since release 1.2.1)
What's New in This Release:
· Fixed brown-paper-bag problem with byBusyChildren. It was internally calling byLoad.
· Add diagnostics for erroneous MulticastStats entries -- Ben Laurie
· Setting no MulticastStats is fatal -- Ben Laurie
· Mac OS X resource acquisition fix -- Marquis Logan
· Use apache notes to prevent infinite recursion in the event that failure causes local handling and local handling is backhand_redirection.
· Allow the first argument in the two argument MulticastStats form to be a hostname (rather than IP).
· Various CRLF fixes from Kevin Walters.