Projects : Net : Wackamole

BSDforge

Following, are FreeBSD ports, or other *BSD related projects, hosted, or worked on at BSDforge in the net category.

What is Wackamole?

Wackamole is an application that helps in making a cluster highly available. It manages a number of virtual IPs, that should be available to the outside world at all times.

Wackamole ensures that a single machine within a cluster is listening on each virtual IP address that Wackamole manages. If it discovers that a particular machine within the cluster is not alive, it will almost immediately ensure that other machines acquire it's public IP. At no time will more than one machine listen on any virtual IP.

Wackamole also works toward achieving a balanced distribution of IP numbers on the machines within the cluster it manages.

What problems will Wackamole solve, and how is different from other tools?

Wakamole operates on a cluster of tightly connected machines (all on the same LAN). It works by managing a pool of IP addresses that you expect to be available at all times. These IP addresses are virtual (meaning no machine has any of those IPs as its default IP address).

Wackamole will work to ensure that all of the IP addresses in the pool are assigned as virtual IPs to the machines in the cluster. No IP address is held by more than one machine and every IP address is available.

This allows you to run a service using multiple DNS RR records without the worry of one of the machines crashing — if the machine crashes, the virtual IP addresses it was responsible for will be managed by the remaining machines in the cluster.

There is no other software like Wackamole. Wackamole is quite unique in that it operates in a completely peer-to-peer mode within the cluster. Other products that provide the same high-availability guarantees use a "VIP" method. A networking appliance assumes a single virtual IP address and "maps" requests to that IP address to the machines in the cluster. This networking appliance is a single point of failure by itself, so most industry accepted solutions incorporate classic master-slave failover or bonding between two identical appliances.

These networking appliances can be:

  • simple commodity servers running user applications to provide high availability,
  • operating system features like IPVS under Linux or similar such features under Windows 2000 and FreeBSD,
  • hardware networking component like Foundry ServerIron, Cisco LocalDirector or other content-aware switch, Cisco Arrowpoint content switched, Extreme Networks' load-balancers and other such hardware products.

How Wackamole works:

Wackamole is an application that runs as root in a cluster to make it highly available. It uses the membership notifications provided by the Spread toolkit to generate a consistent state that is agreed upon among all of the connected Wackamole instances. Wackamole uses this knowledge to ensure that all of the public IP addresses served by the cluster will be covered by exactly one Wackamole instance.

Wackamole works towards achieving a balanced distribution of the clusters IP space between its instances. First, each instance immediately claims its preferred IP address. Then, if the number of virtual IP addresses acquired by any two machines does differ by more than one, Wackamole will work towards making the them differ by one or less. Wackamole has the ability to balance all the IP addresses at once or do it gradually.

Under what license(s) is Wackamole available?

Wackamole is released under the CNDS Open Source License. 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.

Accreditation

Wackamole is developed at the Center for Networking and Distributed Systems, The Johns Hopkins University.

It's creators:

  • Yair Amir
  • Ryan Caudy
  • Ashima Munjal
  • Theo Schlossnagle

ChangeLog

Wackamole ChangeLog

Installation

Instructions for building the various versions of Wackamole, are included in the README file, within each source distribution.

FreeBSD users can simply use the ports system. It's listed under the net category. It can be built, and installed as simply as performing:

$ cd /usr/ports/net/wackamole $ make $ make install clean
Using the FreeBSD pkg system:
$ pkg install net/wackamole

Where can I get a copy of Wackamole?

Wackamole is publicly available, and is available here, or from the following sites:

Versions

The most recent version is:

wackamole-2.1.5.tar.xz

The previous version is:

wackamole-2.1.4.tar.gz

Please use the links above, for older versions.