Load balancing is a technique to distribute workload evenly across two or more computers, network links, CPUs, hard drives, or other resources, in order to get optimal resource utilization, maximize throughput, minimize response time, and avoid overload. Using multiple components with load balancing, instead of a single component, may increase reliability through redundancy. The load balancing service is usually provided by a dedicated program or hardware device (such as a multilayer switch or a DNS server).
Today will show you 2 load balancing tools, Pound and Pen.
Pound Balancing Tool:
“The Pound program is a reverse proxy, load balancer and HTTPS front-end for Web server(s). Pound was developed to enable distributing the load among several Web-servers and to allow for a convenient SSL wrapper for those Web servers that do not offer it natively.”
sudo apt-get install pound
yum install pound
Now in this example are 2 apache servers and 1 pound server. We will try to configure the load balancing between this servers.
To do that, edit /etc/pound/pound.cfg and replace everything below and including ListenHTTP :
If you are u sing a certicat ssl , generate a new certificate with:
cd /etc/ssl && openssl req -x509 -newkey rsa:1024 -keyout local.server.pem -out local.server.pem -days 365 -nodes
and add to the pound config
After any configuration restart the pound with
# /etc/init.d/pound restart
PEN Load balancer tool:
Pen. It’s also a load-balancing proxy, but handily it lets us choose whether or not the X_FORWARDED_FOR header gets changed. It’s about as fast as Pound, and about as stable. Its SSL support is still experimental, but that’s OK, since we’re proxying between local services, not serving as an external front-end. (If we were, we’d probably use Pound.)
This load balancer is known to work on FreeBSD, Linux, HP-UX and Solaris.
First download and extract pen to your local directory. Then run the following commands:
By default the programs are installed in /usr/local/bin. This can be changed like this example:
to install into /usr/bin instead.
Lets give your some example how top run pen
HTTP + HTTPS
pen -l pen80.log -p pen80.pid -h lbhost:80 host1:80 host2:80
pen -l pen443.log -p pen443.pid -h lbhost:443 host1:443 host2:443
pen -l pen.log -p pen.pid lbhost:21 host1:21 host2:21
Can be used for other applications like mail mail mstp and openldap.