Setting Up A High-Availability Load Balancer With HAProxy/Wackamole/Spread On Debian Etch - Page 2
5 Setting Up Wackamole/Spread
We've just configured HAProxy to listen on the virtual IP address 192.168.0.99, but someone has to tell lb1 and lb2 that they should listen on that IP address. This is done by Wackamole and Spread which we install like this:
apt-get install wackamole
To allow HAProxy to bind to the shared IP address, we add the following line to /etc/sysctl.conf:
... and run:
Next we modify /etc/default/spread and set ENABLED to 1:
The Spread configuration is located in /etc/spread/spread.conf. We create a backup of the original file and edit spread.conf as follows:
cp /etc/spread/spread.conf /etc/spread/spread.conf_orig
Spread can send broadcast or multicast messages, therefore you have two choices for configuring Spread.
Option 1 (Broadcast Messages):
Option 2 (Multicast Messages):
Spread will feel free to use broadcast messages within a sub-network if you use broadcast messages. If IP-multicast is supported by the operating system, then the messages will only be received by those machines who are in the group and not by all others in the same sub-network as happens with broadcast addresses
Now we can start Spread:
On to the Wackamole configuration. Open /etc/default/wackamole and set ENABLED to 1:
Then configure Wackamole as follows:
cp /etc/wackamole.conf /etc/wackamole.conf_orig
The VirtualInterfaces stanza is the most important part - it conatins our network interface (eth0 in this example) together with our virtual IP address (192.168.0.99).
The Notify stanza contains hosts (e.g. your router) or subnets to notify when the virtual IP switches. It is not necessary, so you can leave out that stanza, if you like.
(You can learn more about the Wackamole configuration by taking a look at
man 5 wackamole.conf
Finally we start Wackamole on both load balancers:
on both load balancers. The outputs should be different - one load balancer should now own the virtual IP address, e.g. like this:
On the other load balancer, the output should be like this:
6 Starting HAProxy
Now we can start HAProxy:
Our high-availability load balancer is now up and running.
You can now make HTTP requests to the virtual IP address 192.168.0.99 (or to any domain/hostname that is pointing to the virtual IP address), and you should get content from the backend web servers.
You can test its high-availability/failover capabilities by switching off one backend web server - the load balancer should then redirect all requests to the remaining backend web server. Afterwards, switch off the active load balancer (lb1) or stop Wackamole on the active load balancer - lb2 should take over immediately. You can check that by running:
You should now see the virtual IP address in the output on lb2:
8 HAProxy Statistics
You might have noticed that we have used the options stats enable and stats auth someuser:somepassword in the HAProxy configuration in chapter 4. This allow us to access (password-protected) HAProxy statistics under the URL http://192.168.0.99/haproxy?stats. This is how it looks:
If you don't need the statistics, just comment out or remove the stats lines from the HAProxy configuration.