| What is mod_backhand? |
|
mod_backhand is project 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.
|
|
|
|
| What
problems will mod_backhand solve, and how is different from other
tools? |
|
First, we must clear a common misconception. mod_backhand may allow you to
better utilize your resources, but if your bottleneck lies in your bandwidth,
you will not be able to push more information. mod_backhand cannot use more
than 100% of your egress point(s) bandwidth.
However, if you have intensive CGI scripts or your machines are too weak to
individually process the incoming requests, then mod_backhand is a solution.
There are other tools commercially and freely available to attempt to load
balance incoming requests within a cluster of web servers. All of these tools
come at a price, except mod_backhand. If mod_backhand is not enabled for a
certain directory or if it decides not to redirect a request, there is
no overhead, as it is a "part" of Apache (thanks to the module API and
dynamically loadable shared objects).
Simply put, mod_backhand, can attempt to remedy the incorrect assignment of
requests. In a grossly oversimplified scenario of two machines: if an
incoming request is directed at machine B, and mod_backhand
finds the available resources for machine A greater than the cost of
forwarding from B->A plus the available resources on machine B, then it
will be redirected to A.
This redirect comes at a small cost, but a calculated and understood cost
that better utilizes available resources.
mod_backhand can be used by itself or in conjunction with most load
balancing tools: Cisco's LocalDirector, LinuxDirector, naive DNS tricks (round
robin of multiple IPs). The advantage of mod_backhand over these lower-level
(OSI) tools, is that it works on a per-request basis. All of the
previously mentioned tools work on the TCP/IP level, handling
connections not requests. This is a concern when using the pipelined
(multiple requests per connection) HTTP 1.0 (and 1.1) protocols.
|
|
|
|
| How it works: |
|
Backhand is built on top of the standard module API provided by Apache. The
guts of this are available via source code, but you can also look at an implementation overview of
mod_backhand.
Some interesting implementation designs in this project are that of
candidacy functions rather than strict determination functions. This
combined with the ability to cascade functions, provides extremely
configurable run-time configuration alternatives while maintaining speed in
the decision making process.
|
|
|
|
| Under what license(s) is mod_backhand available? |
|
mod_backhand is released under a
Apache-Style license and can be considered Open Source software. Please remember
that the author of this software maintains intellectual property rights and
under his sole discretion can release this revision and any later revision
under alternative licenses as he sees fit. You can also visit the legal license for mod_backhand.
This license is modeled after the license presented for the Apache Project by the Apache Group.
|
|
|
|
| Where
can I get help setting up mod_backhand on my cluster of web
servers? |
|
Well, as it is open source, you can partially help yourself. But, if you
require something more, help is available. After designing and testing this
software, our group has learned to tackle certain obstacles. If you need to
fine tune a cluster or make use of some of the features in Backhand for
motives other than load balancing, we can help.
This project was developed at The Center
for Networks and Distributed Systems at The
Johns Hopkins University, contact us and we will work something out.
Here is a list of 3rd party companies that may
assist in the installation and configuration of mod_backhand.
|
|
|
|
|
|
| mod_backhand: latest release |
mod_backhand version development was released on Jan 10th, 2003 (01.10.2003).
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)
|
|
|
|
| Where can I get mod_backhand? |
|
mod_backhand is publicly available, and is
available here or from
the following sites:
|
If you are interested in the development tree, a publicly available, read-only, anonymous CVS tree exists:
- CVSROOT :pserver:anonymous@commedia.cnds.jhu.edu:/storage/cvs
- MODULE NAME mod_backhand
- Browsable via web through viewcvs here.
|
|
|
|
| ChangeLog (full version) |
mod_backhand changes from 1.2.2 to development
- Update the hostname redirection to allow redirects all the time.
|
|
|
|
| Assorted Documentation and Related Links |
|
|
|
|
|
| Where was mod_backhand created? |
 |
|
|
|