If you are planning to scale your website to accommodate for extra traffic on the website.You have two options you can scale vertically or horizontally. Vertical scaling usually involves adding extra ram/processing power which may be desired,but there is a limit to this kind of scaling. Horizontal scaling is were you setup multiple machines and they work together to get the work done.Haproxy is loadbalancer which will let you scale your infrastructure horizontally.

To setup loadbalancing between 2 machines is pretty simple.Firstly you will require two machines with static address or a DNS entry to identify the machines.

I will using vagrant during this process of setting up a loadbalancer.I will be using vagrant a virtual machine environment which does have a gui.More information about it can be found at http://vagrantup.com/.

I have setup up virtual machines running ubuntu 13.04 LTS.Both the machines are running Apache2 with default settings.You can replicate the same by running this on the terminal.

sudo apt-get update
sudo apt-get install apache2 php5
sudo apt-get install libapache2-mod-php5
sudo service apache2 restart

Next we get the ip address of the two machines and store them someplace safely.

ifconfig eth0

The ip address of machine one is and the second machine is

We them launch another vm with haproxy.

Run sudo apt-get install haproxy

This will install haproxy with default settings. Next to start haproxy as service we have to enable it in the configuration file.

vi /etc/default/haproxy
sudo service haproxy restart

Next we haproxy to point to the two servers we setup earlier.Next we move the original configuration of haproxy and keep it as a backup.

sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.bak

We then create our own configuration file with

sudo vi /etc/haproxy/haproxy.cfg

Add this to the cfg file.

    log local0 notice
    maxconn 2000
    user haproxy
    group haproxy

listen appname
    mode http
    stats enable
    cookie SRVNAME insert
    balance roundrobin
    option httpclose
    option forwardfor
    server server1 check
    server server1 check

Once this is done a quick restart of haproxy and the haproxy acts as the frontend for the incoming traffic.