HAProxy is a network software application that offers high availability, load balancing, and proxying for TCP and HTTP network applications. It is suited for high traffic and powers many websites. This article will show you how to install and set up HAProxy on Ubuntu 14.04.
Although HAProxy has several prominent features, this article focuses on how to set up HAProxy to proxy your web application.
Since Ubuntu 14.04 does not ship with HAProxy 1.5 (the latest stable release at the time of writing), we will have to use a PPA to be able to install it using apt-get:
add-apt-repository ppa:vbernat/haproxy-1.5Next, update the system:
apt-get update
apt-get dist-upgradeNow install HAProxy with the following command:
apt-get install haproxyIf everything is successful, then you have finished installing HAProxy and can proceed to the next step.
The HA Proxy configuration file is split up into two sections – global and proxies. One deals with process-wide configuration, while the other consists of default configuration, frontend, and backend sections.
With your favorite text editor, open /etc/haproxy/haproxy.cfg it, and you will notice the predefined sections: “global” and “defaults”. The first thing that you may want to do is increase the maxconn size to a reasonable size, as this affects the connections that HAProxy are allowed. Too many connections may cause your web service to crash due to too many requests. You will need to adjust the size to see what works for you. In the global section, add or change maxconn to 3072.
In the default section, add the following lines under mode http:
option forwardfor
option http-server-closeThis will add X-Forwarded-For headers to each request, as well as reduce the latency between HAProxy and preserve client persistent connections.
Frontend and Backend
Commonly, the first step when it comes to using it is to set up a frontend to handle HTTP connections. Add the following:
frontend http-frontend
bind public_ip:80
reqadd X-Forwarded-Proto:\ http
default_backend wwwbackendNote: Be sure to replace public_ip with your domain or your public IP. Otherwise, this entire setup will not work.
After you have finished configuring the frontend, you can now add your backend by adding the following lines to the end of your configuration:
backend wwwbackend
server 1-www private_ip_1:80 check
server 2-www private_ip_2:80 check
server 3-www private_ip_3:80 checkThe backend configuration used here creates a connection named X-www to private_ip_X:80 (Replace X with 1 – 3, and replace private_ip_X with your private or public IP). This will allow you to load balance between each server set (assuming you have more than one server). The check The option makes the load balancer perform health checks on the server.
When you are done, save the configuration file, then restart HAProxy by running:
service haproxy restartIf everything is working, then you will be able to connect to http://public_ip/ (replacing it with your AKLWEB HOST VPS IP) and view your website.