Configuring Load-Balanced Clusters (
Page 1 of 4 )
In this conclusion to a two-part series on load-balanced clusters, you'll learn how to configure the load balancer and test the system. This article is excerpted from chapter seven of Linux System Administration, written by Tom Adelstein and Bill Lubanovic (O'Reilly, 2007; ISBN: 0596009526). Copyright © 2007 O'Reilly Media, Inc. All rights reserved. Used with permission from the publisher. Available from booksellers or direct from O'Reilly Media.
Configuring the Load Balancer
On lb, create the load balancer configuration file, /etc/ha.d/ldirectord.cf:
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent=no
virtual=70.253.158.42:80
real=70.253.158.41:80 gate
real=70.253.158.45:80 gate
service=http
request="director.html"
receive="I'm alive!"
scheduler=rr
protocol=tcp
checktype=negotiate
If
quiescent
is
yes
, a faulty realserver gets a weight of
0
but remains in the LVS rout
ing table; we’ve set it to
no
, so dead servers will be removed from the pool. The weight of a server reflects its capacity relative to the other servers. For a simple LB scheme like ours, all live servers have a weight of
1
and dead ones have a weight of
0
.
If
checktype
is
negotiate
, the director will make an HTTP request to each of the realservers for the URL
request
, and see if its contents contain the string value for
receive
. If the value is
check
, only a quick TCP check will be done, and
request
and
receive
will be ignored.
The system startup files in /etc for ldirectord should have already been created during the installation. Ultra Monkey also installed Heartbeat, which we aren’t using yet, so let’s disable it for now:
# update-rc.d heartbeat remove
update-rc.d: /etc/init.d/heartbeat exists during rc.d purge (use -f to force)
The load balancer monitors the health of the web servers by regularly requesting the file we specified in ldirectord.cf (
request="director.html"
).
Since this server will be responding to web requests at the VIP address (70.253.158.42), we’d better tell the server about it. Edit /etc/network/interfaces and add these lines to create the alias device
eth0:0
:
auto eth0:0
iface eth0:0 inet static
address 70.253.158.42
netmask 255.255.255.248
# These should have the same values as for eth0:
network ...
broadcast ...
gateway ...
Now, fire up this new IP address:
# ifup eth0:0
Finally, start your engines on lb:
# /etc/init.d/ldirectord start
Starting ldirectord... success