In my lab setup of HAProxy, I have 3 servers
centos-1, running apache
centos-2, running apache
centos, running HAProxy, HTTP requests to it will be forwarded to the other 2 servers
Here are my steps of setting up HAProxy to load balance between to HTTP servers.
1. on centos-1 and centos-2: install apache
# yum -y install httpdcreate index.html for apache
# hostname -s > /var/www/html/index.htmldisable iptables, start apache
# service iptables stop
# service httpd start
2. on centos, download HAProxy, the latest stable version is 1.4.24
# ./haproxy -v
HA-Proxy version 1.4.24 2013/06/17
Copyright 2000-2013 Willy Tarreau <email@example.com>
3. edit haproxy configuration file, my sample haproxy.cfg, note this is for testing only, for complete configuration options, refer to http://cbonte.github.io/haproxy-dconv/configuration-1.4.html
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
server server1 centos-1:80 maxconn 32
server server2 centos-2:80 maxconn 32
4. start HAProxy
# ./haproxy -f haproxy.cfg
5. launch web browser, visit http://192.168.100.100, you will see the page displaying "centos-1", this shows our request is being served by centos-1
refresh the page again, page will display "centos-2", our request is being served by centos-2 this time.
If we change balance roundrobin to balance source, our request will always being served by the same host, but using sticky session is still the preferred way to make sure clients always connect to the same backend server.
The setup is done, but it needs more tweaks before it can be used in production environment.things to check:
1. check backend server aliveness.
2. sticky session.
3. we need to change apache LogFormat on centos-1 centos-2 to reflect the real HTTP client address.
In our setup centos is the only server running HAProxy, it will be a single point of failure, we can setup centos cluster, and make HAProxy listening on the VIP.